【发布时间】:2013-11-10 18:57:16
【问题描述】:
这里有两张表。我想根据两个表中的信息更新(不选择)第一个表。
第一个名为somecities的表:
Name - State - Country - Info1 - Info2
Orlando - FL - US - 123 -AAA
Hrodna - HV - BY - 890 -BBB
名为allcities的第二个表:
Name - State - Country - Info1
Orlando - FL - US - 123
Orlando - KY - US - 456
Orlando - WV - US - 789
Orlando - SW - SA - 333
Hrodna - HV - BY - 890
Minsk - MV - BY - 199
somecities 表中的任何一对(姓名、州、国家/地区)都在allcities 表中,如果重要的话。所以,allcities 表更大。
我想这样修改somecities:
1) 取第一行,取Orlando。在allcities 中遇到了 4 次。因此,制作 4 串 Orlando 而不是 1 串(将 3 行添加到某些城市)。
2) 下一个城市(第二个和最后一个)-Hrodna。 Hrodna 在所有城市中只遇到一次,因此我们不会向 somecities 添加任何行(添加零行)。
3) 对somecities 中的每一行执行此操作。
查询结果为更新后的somecities:
Name - State - Country - Info1 - Info2
Orlando - FL - US - 123 - AAA
Orlando - KY - US - 456 - AAA
Orlando - WV - US - 789 - AAA
Orlando - SW - SA - 333 - AAA
Hrodna - HV - BY - 890 - BBB
附:如您所见,Info2 中的值取自同一城市的 Info2。
可以在一个查询中完成吗?也将接受两个查询作为答案。
我解释清楚了吗?
谢谢。
【问题讨论】:
-
你会想用 NOT EXISTS,我会敲一个 SQL Fiddle 例子
-
听起来你想要
INSERT而不是UPDATEsomecities表。您想以任何方式更改现有行吗? -
你是对的。谢谢你指出。是的,现有行没有更改。所以我想通过插入几行来更新 somecities 表。
标签: mysql sql join sql-update