我想用 table2 中的另一个字段更新 table1 中的一个字段。我编写了以下查询,但它不起作用。
UPDATE tempdata A
SET A.new_user_id =
(SELECT B.id FROM user B
WHERE A.usr_email = B.usr_email)
它给出“#1242 - 子查询返回超过 1 行”错误。任何人请帮助我。
UPDATE tempdata A, user B
SET A.new_user_id = B.id
WHERE A.usr_email = B.usr_email
这也是处理这个场景的一种方法
UPDATE A
SET A.new_user_id = B.id
FROM tempdata A
INNER JOIN user B ON A.usr_email = B.usr_email
即使是更新语句,您仍然可以连接表。
UPDATE tempdata A
INNER JOIN user B
ON A.usr_email = B.usr_email
SET A.new_user_id = B.id
请注意,错误意味着在表用户中有超过 1 行字段 usr_email 等于 tempdata 的行。在使用 Salil 建议的 LIMIT 1 a 运行实际更新语句之前检查是否有欺骗性