MySQL объединяет два столбца и добавляет в новый столбец
У меня есть следующая структура с таблицей MySQL:
+----------------+----------------+----------+
| zipcode | city | state |
+----------------+----------------+----------+
| 10954 | Nanuet | NY |
+----------------+----------------+----------+
Я хочу объединить вышеуказанные 3 столбца в один столбец следующим образом:
+---------------------+
| combined |
+---------------------+
| 10954 - Nanuet, NY |
+---------------------+
И я хочу добавить этот "комбинированный" столбец в конец таблицы, не уничтожая исходные 3 поля.
Ответы
Ответ 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