0

我正在使用此处提供的答案:查询不存在元数据键的行

   UPDATE table1
   SET table1.id = table2.id
   FROM table1
   LEFT JOIN table2 ON table1.id=table2.id
   WHERE table.id IS NULL

我希望将表 1 中的所有 id 设置为 table2 中的相应 id,仅当 table1 的 id 为空时,但这会给出“mysql 错误”。

有什么想法吗?先感谢您。

4

2 回答 2

1

像大多数数据库一样,MySQL 具有独特的连接和更新语法:

UPDATE table1
LEFT JOIN table2 ON table1.id=table2.id
SET table1.id = table2.id
WHERE table1.id IS NULL
于 2013-01-04T23:37:50.723 回答
0

您不能加入 UPDATE 语句(编辑-也许可以)。您需要一个只返回一行的子选择。如果 id 是连接列,那么您的查询也毫无意义 - 我假设您正在加入其他内容。

我认为这样的事情是正确的(没有测试过)。

UPDATE table1 outer
SET id = (
    SELECT table2.id 
    FROM table2 JOIN table1 USING(join_column) -- or ON if the columns aren't the same
    WHERE join_column = outer.join_column
)
WHERE id is null
于 2013-01-04T23:42:29.850 回答