xテーブルとyテーブルから削除するクエリを作成したかったのですが、オブジェクトid = "123"は、'z'テーブルの指定された名前のzテーブルからオブジェクトIDを選択します。これに対するSQLクエリを作成するにはどうすればよいですか?
私にお知らせください 。
2つのテーブルから同時に削除することはできません。2つのdeleteステートメントが必要です。
DELETE
x
WHERE
object_id IN (SELECT object_id FROM z WHERE name = 'whatever')
DELETE
y
WHERE
object_id IN (SELECT object_id FROM z WHERE name = 'whatever')
IN
同じ名前のオブジェクトが複数ある場合に備えて使用しました。ニーズに合わせてその動作を変更することをお勧めします。
これを試して..
delete t1,t2 from x t1 inner join y t2 on t1.id=t2.id where t1.id in
(SELECT object_id FROM z WHERE name = 'YourName');
でテスト済みMysql
。
単一のバッチ(プール)での異なるテーブルからの削除は同期プロセスです。つまり、1つずつ実行されるため、要件に応じてデータを削除するには、2つの異なるクエリを作成する必要があります。
指定された名前のデータが1つだけであると仮定します
。DELETEXWHEREobject_id = object_id FROM Z WHERE name ='name'
DELETE
y
WHERE object_id = object_id FROM z WHERE name ='name'
これにより、「IN」よりも優れたパフォーマンスが得られます
1つの名前に複数のレコードがある場合は、「IN」を使用する必要があります。