我正在使用此处提供的答案:查询不存在元数据键的行
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 错误”。
有什么想法吗?先感谢您。
我正在使用此处提供的答案:查询不存在元数据键的行
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 错误”。
有什么想法吗?先感谢您。
像大多数数据库一样,MySQL 具有独特的连接和更新语法:
UPDATE table1
LEFT JOIN table2 ON table1.id=table2.id
SET table1.id = table2.id
WHERE table1.id IS NULL
您不能加入 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