MySQL объединяет два столбца и добавляет в новый столбец - PullRequest
46 голосов
/ 25 апреля 2011

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

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

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

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

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

Ответы [ 4 ]

126 голосов
/ 25 апреля 2011

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

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);
22 голосов
/ 25 апреля 2011

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

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

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

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

14 голосов
/ 25 апреля 2011

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

UPDATE tbl SET combined = CONCAT(zipcode, ' - ', city, ', ', state)
0 голосов
/ 18 апреля 2017

ВЫБРАТЬ КОНКАТ (почтовый индекс, '-', город, ',', штат) КАК КОМБИНИРОВАННО ИЗ ТАБЛИЦЫ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...