我几个小时前刚刚做过这个,但现在我无法重复我的“壮举”。
这就是我要做的事情:
UPDATE TABLE sl_adr a, sl_address b
SET a.fk_adrID = b.id
WHERE a.street1 = b.street1
AND a.postal_code = b.postal_code
AND a.city = b.city
AND a.fk_countryID = b.fk_countryID
运行此操作时出现错误:
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 附近
'UPDATE TABLE sl_adr a,sl_address b
SET a.fk_adrID = b.id
在哪里a.street1 = b。'
在第1行
谷歌搜索并看到这里后,我仍然无法找出问题所在。
在Toad中,我可以看到a
我们用红色加下划线。但不明白为什么。
答案 0 :(得分:3)
您的查询几乎没问题,只有TABLE关键字是多余的。
UPDATE
sl_adr a, sl_address b
SET
a.fk_adrID = b.id
WHERE
a.street1 = b.street1
AND a.postal_code = b.postal_code
AND a.city = b.city
AND a.fk_countryID = b.fk_countryID
另外,这个是可能的 -
UPDATE sl_adr a
JOIN sl_address b
ON a.street1 = b.street1
AND a.postal_code = b.postal_code
AND a.city = b.city
AND a.fk_countryID = b.fk_countryID
SET
a.fk_adrID = b.id
答案 1 :(得分:0)
别名在更新语句中绝对正常。我认为这里的问题是你需要用UPDATE TABLE
替换UPDATE
。像这样:
UPDATE sl_adr a, sl_address b
SET a.fk_adrID = b.id
WHERE a.street1 = b.street1
AND a.postal_code = b.postal_code
AND a.city = b.city
AND a.fk_countryID = b.fk_countryID;