我有一个MySQL表的以下结构:
+----------------+----------------+----------+
| zipcode | city | state |
+----------------+----------------+----------+
| 10954 | Nanuet | NY |
+----------------+----------------+----------+
Run Code Online (Sandbox Code Playgroud)
我想将上面的3列组合成一列,如下所示:
+---------------------+
| combined |
+---------------------+
| 10954 - Nanuet, NY |
+---------------------+
Run Code Online (Sandbox Code Playgroud)
我想将这个"组合"列添加到表的末尾,而不会破坏原来的3个字段.
squ*_*ull 127
创建列:
ALTER TABLE yourtable ADD COLUMN combined VARCHAR(50);
Run Code Online (Sandbox Code Playgroud)
更新当前值:
UPDATE yourtable SET combined = CONCAT(zipcode, ' - ', city, ', ', state);
Run Code Online (Sandbox Code Playgroud)
自动更新所有未来值:
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);
Run Code Online (Sandbox Code Playgroud)
Mik*_*der 24
你确定你要这么做吗?实质上,您正在复制三个原始列中的数据.从那时起,您需要确保组合字段中的数据与前三列中的数据匹配.这对您的应用程序来说是更多的开销,而更新系统的其他进程需要了解这种关系.
如果您需要数据,为什么不在需要时选择?用于选择该字段中的内容的SQL将是:
SELECT CONCAT(zipcode, ' - ', city, ', ', state) FROM Table;
Run Code Online (Sandbox Code Playgroud)
这样,如果字段中的数据发生更改,则无需更新组合字段.
zer*_*kms 14
向表中添加新列并执行查询:
UPDATE tbl SET combined = CONCAT(zipcode, ' - ', city, ', ', state)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
126927 次 |
最近记录: |