0

同じ構造の2つのテーブルがあります

  • clients行 1+2 を含む
  • clients32行目のみ

clientsテーブルの2行目を削除したい

 SELECT * 
 FROM clients 
 WHERE EXISTS (SELECT * FROM clients3 WHERE clients3.id = clients.id))

行2が表示されます。しかし、削除する方法がわかりません。

DELETE * 
FROM clients 
WHERE (SELECT * 
       FROM clients 
       WHERE EXISTS (SELECT * FROM clients3 WHERE clients3.id = clients.id))

動作しません。

4

3 に答える 3

2

clientsクエリでテーブルを 2 回参照して句*から削除する必要はありません-DELETE

DELETE c1
FROM clients c1
INNER JOIN clients3 c3 ON c3.id = c1.id --INNER JOIN will work as EXISTS for 1-1 Relation
于 2012-10-21T12:13:26.860 に答える
2

サブクエリ用の一時テーブルを作成する必要があります。

DELETE 
FROM clients 
WHERE ID IN 
(
    SELECT ID
    FROM
    (
        SELECT ID FROM clients WHERE EXISTS (SELECT * FROM clients3 WHERE clients3.id = clients.id)
    ) x
)
于 2012-10-21T12:00:29.717 に答える