0

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

2 回答 2

5

=正如错误所说,不能只匹配一行。您可以IN改用:

UPDATE tableA set tableA.active = b'0'
where
tableA.phone IN
(Select  phone from  tableB  where tableB.status='ERROR');
于 2012-08-24T18:36:04.630 回答
3

作为@Mathieu Imbert 正确答案的替代方法,您可以使用多表UPDATE语法来连接表:

UPDATE tableA JOIN tableB USING (phone)
SET    tableA.active = b'0' WHERE tableB.status = 'ERROR'
于 2012-08-24T18:38:35.440 回答