Подтвердить что ты не робот

MySQL объединяет два столбца и добавляет в новый столбец

У меня есть следующая структура с таблицей MySQL:

+----------------+----------------+----------+
|    zipcode     |      city      |   state  |
+----------------+----------------+----------+
|     10954      |     Nanuet     |    NY    |
+----------------+----------------+----------+

Я хочу объединить вышеуказанные 3 столбца в один столбец следующим образом:

+---------------------+
|      combined       |
+---------------------+
| 10954 - Nanuet, NY  |
+---------------------+

И я хочу добавить этот "комбинированный" столбец в конец таблицы, не уничтожая исходные 3 поля.

4b9b3361

Ответ 1

Создайте столбец:

ALTER TABLE yourtable ADD COLUMN combined VARCHAR(50);

Обновить текущие значения:

UPDATE yourtable SET combined = CONCAT(zipcode, ' - ', city, ', ', state);

Обновлять все будущие значения автоматически:

CREATE TRIGGER insert_trigger
BEFORE INSERT ON yourtable
FOR EACH ROW
SET new.combined = CONCAT(new.zipcode, ' - ', new.city, ', ', new.state);

CREATE TRIGGER update_trigger
BEFORE UPDATE ON yourtable
FOR EACH ROW
SET new.combined = CONCAT(new.zipcode, ' - ', new.city, ', ', new.state);

Ответ 2

Вы действительно хотите это сделать? По сути, вы дублируете данные, находящиеся в трех исходных столбцах. С этого момента вам нужно убедиться, что данные в комбинированном поле соответствуют данным в первых трех столбцах. Это больше накладных расходов для вашего приложения, а другие процессы, которые обновляют систему, должны будут понять отношения.

Если вам нужны данные, почему бы не выбрать, когда вам это нужно? SQL для выбора того, что будет в этом поле, будет:

SELECT CONCAT(zipcode, ' - ', city, ', ', state) FROM Table;

Таким образом, если данные в полях изменяются, вам не нужно обновлять комбинированное поле.

Ответ 3

Добавьте новый столбец в таблицу и выполните запрос:

UPDATE tbl SET combined = CONCAT(zipcode, ' - ', city, ', ', state)

Ответ 4

SELECT CONCAT (zipcode, '-', city, ',', state) AS COMBINED FROM TABLE