-1

我想用 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 行”错误。任何人请帮助我。

4

4 回答 4

2
UPDATE tempdata A, user B
  SET A.new_user_id = B.id
  WHERE A.usr_email = B.usr_email
于 2012-10-30T11:25:28.467 回答
1

这也是处理这个场景的一种方法

UPDATE  A  
SET A.new_user_id = B.id
FROM tempdata A 
INNER JOIN user B ON A.usr_email = B.usr_email
于 2012-10-30T12:33:55.417 回答
1

即使是更新语句,您仍然可以连接表。

UPDATE tempdata A
       INNER JOIN user B
          ON A.usr_email = B.usr_email
SET A.new_user_id = B.id
于 2012-10-30T11:25:41.947 回答
1

请注意,错误意味着在表用户中有超过 1 行字段 usr_email 等于 tempdata 的行。在使用 Salil 建议的 LIMIT 1 a 运行实际更新语句之前检查是否有欺骗性

于 2012-10-30T11:26:59.433 回答