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(邮政编码,' – ',城市,',',州)作为组合从表