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

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

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

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

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

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

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

 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); 

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

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

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

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

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

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

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