无法从另一个表更新表

时间:2011-12-15 04:48:10

标签: mysql

我几个小时前刚刚做过这个,但现在我无法重复我的“壮举”。

这就是我要做的事情:

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我们用红色加下划线。但不明白为什么。

2 个答案:

答案 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;