我有两个表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');
答案 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'