0

xテーブルとyテーブルから削除するクエリを作成したかったのですが、オブジェクトid = "123"は、'z'テーブルの指定された名前のzテーブルからオブジェクトIDを選択します。これに対するSQLクエリを作成するにはどうすればよいですか?

私にお知らせください 。

4

3 に答える 3

3

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同じ名前のオブジェクトが複数ある場合に備えて使用しました。ニーズに合わせてその動作を変更することをお勧めします。

于 2012-06-14T10:23:36.610 に答える
3

これを試して..

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

于 2012-06-14T10:41:50.120 に答える
0

単一のバッチ(プール)での異なるテーブルからの削除は同期プロセスです。つまり、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」を使用する必要があります。

于 2012-07-19T02:56:02.673 に答える