我有3张桌子。公司,Kommuner 和 Fylker。
公司表有一个空字段 forretningsadresse_fylke
但另一个字段 forretningsadresse_kommune
有一个值。
所以基本上,我需要填写 forretningsadresse_fylke
,基于 forretningsadresse_kommune
的值。
现在, forretningsadresse_kommune
的值和我想要的 forretningsadresse_fylke
的值存储在 Kommuner 和 Fylker 表中。
所以我写了这个查询,但这似乎不起作用,因为 600 秒后“MySQL 服务器消失了”。
UPDATE companies, fylker, kommuner
SET companies.forretningsadresse_fylke = (
SELECT fylkeNavn
FROM fylker
WHERE fylker.fylkeID = kommuner.fylkeID
)
WHERE companies.forretningsadresse_kommune = kommuner.kommuneNavn
这是 Kommuner 和 Fylker 表的外观。
通讯员表
菲克表
公司表
| forretningsadresse_fylke | forretningsadresse_kommune |
|===========================|============================|
| | |
| | |
| | |
| | |
| | |
| | |
所以我想知道查询是否有问题?另外,值得一提的是,我尝试更新的表(公司)有超过 100 万行。
提前致谢!
原文由 Kaizokupuffball 发布,翻译遵循 CC BY-SA 4.0 许可协议
您不希望在
fylker
UPDATE
语句中出现 —。您还应该使用正确的join
。所以第一个重写是:如果我们假设在
fylker
中有一个匹配,那么这很好。如果有多个匹配项,那么您需要选择一个。一个简单的方法是:注意:这将更新所有具有匹配“kommuner”的公司。如果没有匹配的“fylker”,则该值将设置为
NULL
。我相信这是你问题的意图。此外,表别名使查询更易于编写和阅读。