我遇到以下情况:我有一个表,可以说X
,其中字段为
-------------------------
| City | Country |
------------------------|
| Melbourne | Australia |
| Phoenix | USA |
| Manchester| USA |
| Manchester| UK |
| Phoenix | USA |
| Pune | India |
------------------------
仅当city
相同且country
不同时,我才尝试更新city
列。我尝试过这样做
UPDATE X SET (
City
) = CONCAT(CITY
,COUNTRY
) WHERE = ?
where 子句应该是什么?
编辑:
输出应该类似于
------------------------------
| City | Country |
-----------------------------|
| Melbourne | Australia |
| Phoenix | USA |
| Manchester, USA| USA |
| Manchester, UK | UK |
| Phoenix | USA |
| Pune | India |
------------------------------
最佳答案
UPDATE X inner join X X_1 on X.city = X_1.city
SET X.City=CONCAT(X.city, ', ', X.Country)
WHERE X.country <> X_1.country
仅当多个国家/地区存在相同的城市名称时,才会将城市名称设置为 CONCAT(X.city, ', ', X.Country)
。
编辑:我想我更喜欢这个其他版本:
UPDATE
X inner join
(select city from X group by city having count(*)>1) X_dup
on X.city = X_dup.city
SET X.City=CONCAT(X.city, ', ', X.Country)
我使用所有这些奇怪的连接,因为如果您在子查询中引用表,MySql 不允许您更新它。
关于mysql - 在给定条件下连接 2 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13398365/