我试图写一个MySQL查询来更新表,但是我得到了一个错误。这是我的问题:
UPDATE mytable
SET mytable.email = (
select ps_customer.id_customer
from ps_customer
where ps_customer.email = mytable.email)
where (ps_customer.email = mytable.email)
Mysql说:#1054 - 未知栏' ps_customer.email'在' where子句'
我无法理解错误在哪里。你能帮帮我吗?
最诚挚的问候, 西蒙
答案 0 :(得分:1)
你的第二个WHERE在子查询中看不到。你如何接近这个有点奇怪;如果使用带有INNER JOIN的UPDATE,则可以使用WHERE条件作为JOIN条件,只需在一个JOINed表中设置字段,并使用另一个JOINed表中的值。像这样....
UPDATE mytable INNER JOIN ps_customer
ON mytable.email = ps_customer.email
SET mytable.email = ps_customer.id_customer
;
答案 1 :(得分:0)
您不需要第二个WHERE
子句。子查询中的WHERE
子句匹配两个表之间的行(这称为相关子查询)。但是编写它的更好方法是作为连接:
UPDATE mytable AS m
JOIN ps_customer AS c ON m.email = c.email
SET m.email = c.id_customer