0

現時点では、データを削除する必要がある 1 つのテーブルの注文がありますか。行を削除する必要があるテーブルには、2 つの接続があります。接続の 1 つは、顧客の名前/サブネームを持つテーブルを参照します。注文テーブルで特定のサブネームを持つこれらの顧客から、特定の数の製品を削除する必要があります。削除する必要がある製品のリストを取得するには、その価格で 3 番目の表にチェックインする必要があります。

以下は、私が作成した次のクエリですが、それほど驚くことではないエラーが返されました。

    DELETE FROM `table1`
WHERE `entry` = (SELECT `entry` FROM `table2` WHERE `subname` = 'Buyer')
    AND `item` = (SELECT `entry` FROM `table3` WHERE `Price` != '226' OR '232');

このクエリを実行すると、次のエラーが発生しました..

エラー コード: 1242 サブクエリが複数の行を返します

実行時間 : 0 秒 転送時間 : 0 秒 合計時間 : 0.044 秒

適切なクエリのセットアップを手伝ってくれる人はいますか?

4

2 に答える 2

1

等価の代わりに IN 句を使用する必要があります

顧客名だけに基づいてテーブルから顧客レコードを削除する場合、クエリは次のようになります

DELETE FROM `table1` 
WHERE `entry` IN (SELECT `entry` FROM `table2` WHERE `subname` = 'Buyer') 
于 2012-10-08T17:37:33.827 に答える
0

あなたのクエリは

DELETE FROM `table1`
WHERE `entry` IN (SELECT `entry` FROM `table2` WHERE `subname` = 'Buyer')
    AND `item` IN (SELECT `entry` FROM `table3` WHERE `Price` != '226' OR '232');
于 2012-10-08T17:34:54.003 に答える