MySQL结合了两列,并添加到一个新的列
我有以下结构与MySQL表:
+----------------+----------------+----------+ | zipcode | city | state | +----------------+----------------+----------+ | 10954 | Nanuet | NY | +----------------+----------------+----------+
我想把上面的3列组合成这样一列:
+---------------------+ | combined | +---------------------+ | 10954 - Nanuet, NY | +---------------------+
我想把这个“组合”列添加到表的末尾而不破坏原始的3个字段。
创build列:
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);
你确定要这么做? 本质上,您正在复制三个原始列中的数据。 从这一点开始,您需要确保组合字段中的数据与前三列中的数据匹配。 这对您的应用程序来说是更多的开销,而更新系统的其他进程需要了解这种关系。
如果您需要这些数据,为什么不在需要的时候select? 用于select该字段中的SQL的SQL将是:
SELECT CONCAT(zipcode, ' - ', city, ', ', state) FROM Table;
这样,如果字段中的数据发生更改,则不必更新组合字段。
将新列添加到您的表中并执行查询:
UPDATE tbl SET combined = CONCAT(zipcode, ' - ', city, ', ', state)
selectCONCAT(邮政编码,' – ',城市,',',州)作为组合从表