0

データの 1 つのテーブルをチェックする最良の方法を知りたいです。WHERE 句に一致する行がもう存在しない場合は、別のテーブルから行を削除します。

私は自分で試してみましたが、6 つのクエリと入れ子になった if/else で面倒になりすぎて、うまくいきません。

これまで SQL 結合を使用したことがないため、例を使用すると応答を理解するのに役立ちます。

デバイスのテーブルがあり、デバイスとパスワードを含むマスター テーブルがあります。

上の表のデバイスの複数の行と、一連のシリアル番号を含む 2 番目の表があります。

マスター テーブルにリストされているシリアル番号が 2 番目のテーブルに含まれなくなったら、マスター テーブルのデバイスとパスワードを含む行が必要です。

4

3 に答える 3

0
DELETE table_devices
FROM table_devices
left JOIN serial ON table_devices.id= serial.device_id
WHERE serial.device_id is null
于 2012-10-19T06:45:24.410 に答える
0

次のような DELETE ステートメントを作成できます

DELETE FROM masterTable WHERE ID NOT IN (SELECT masterTableID FROM secondaryTable)

これにより、2 番目のテーブルに参照がないマスター テーブルからすべての行が削除されます。これは、1 つの行だけを削除するのではなく、一致するすべての行を削除することも意味します。必要なのは、2 番目のテーブルのすべての行がマスター テーブルを参照することだけです。

于 2012-10-19T06:39:32.353 に答える
0

テーブル顧客とテーブル注文がある場合のように、注文がない場合は顧客を削除しますか? 次に、副選択を使用できます。

delete from customer where customerid not in (select customerid from order)
于 2012-10-19T06:37:05.490 に答える