0

tableAとtableBの2つのテーブルがあり、tableAは電話マスターレコードであり、tableBにはtableAの電話レコード内の最後のトランザクションの更新ステータスが含まれています。tableB.status='ERROR'のすべてのレコードの値tableA.activeをb'0'に更新したいと思います。

これは私が持ってきたMySQLステートメントですが、エラーが発生します(エラーコード:1242。サブクエリは複数の行を返します

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

2 に答える 2

5

=エラーが言ったように、1つの行だけに一致することはできません。代わりに使用できます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 に答える