2012-10-30 190 views
-1

我想更新table1中的字段与table2.table中的另一个字段我写了下面的查询,但它不工作。更新字段与另一个字段另一个表

UPDATE tempdata A 
    SET A.new_user_id = 
    (SELECT B.id FROM user B 
    WHERE A.usr_email = B.usr_email) 

它给“#1242 - 子查询返回多于一行”错误。任何人都请帮助我。

+1

这是因为你有更多的用户使用相同的电子邮件的一种方式......那么你应该决定采用哪一个ID? –

+1

如果你想根据另一个表的值更新所有字段,请改用join。请参阅下面的答案。 –

回答

2
UPDATE tempdata A, user B 
    SET A.new_user_id = B.id 
    WHERE A.usr_email = B.usr_email 
+0

我想更新所有行中的字段。 –

+0

这是一个旧的连接语法 –

1

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

UPDATE tempdata A 
     INNER JOIN user B 
      ON A.usr_email = B.usr_email 
SET A.new_user_id = B.id 
1

请注意,错误意味着在表用户有超过1行与字段usr_email等于tempdata的一个。与限制1通过萨里尔

1

建议runniing实际更新语句之前检查受骗者这也是处理此之情况

UPDATE A 
SET A.new_user_id = B.id 
FROM tempdata A 
INNER JOIN user B ON A.usr_email = B.usr_email 
相关问题