如何用MySQL中的select更新

时间:2012-08-24 18:34:31

标签: mysql sql-update sql

我有两个表tableA和tableB,tableA是电话主记录,tableB包含tableA电话记录中最后一次转换的更新状态。我想为tableB.status ='ERROR'中的所有记录更新值tableA.active到b'0'。

这是我附带的MySQL语句,但是给了我错误(错误代码:1242。子查询返回超过1行

UPDATE tableA set tableA.active = b'0'
where
tableA.phone =
(Select  phone from  tableB  where tableB.status='ERROR');

2 个答案:

答案 0 :(得分:5)

正如错误所说,

=不仅可以匹配一行。您可以改为使用IN

UPDATE tableA set tableA.active = b'0'
where
tableA.phone IN
(Select  phone from  tableB  where tableB.status='ERROR');

答案 1 :(得分:3)

作为@Mathieu Imbert's correct answer的替代方法,您可以使用多表UPDATE语法来连接表:

UPDATE tableA JOIN tableB USING (phone)
SET    tableA.active = b'0' WHERE tableB.status = 'ERROR'