23

次の値を持つテーブル A があります。

    
+--------+------+
| | ID1 | ID2 |
+--------+------+
| | 1689年 | 1709年 |
| | 1709年 | 1689年 |
| | 1782年 | 1709年 |
| | 1911年 | 1247 |
| | 1247 | 1468年 |
| | 1641年 | 1468年 |
| | 1316 | 1304 |
| | 1501 | 1934年 |
| | 1934年 | 1501 |
| | 1025 | 1101 |
+--------+------+

および次の値を持つ別の関係 (表 B):

+--------+------+
| | ID1 | ID2 |
+--------+------+
| | 1641年 | 1468年 |
| | 1911年 | 1247 |
+--------+------+

テーブル B に表示されるテーブル A のすべての行 (ID1 と ID2 が完全に一致) を削除したいと考えています。理論的には単純に思えますが、私は EXISTS ステートメントやその他のアプローチに満足していません。私はSQLiteを使用しています。

どんな提案でも大歓迎です。

4

3 に答える 3

34

どうですか:(これがSQLiteで機能するかどうかはよくわかりません)

DELETE FROM TableA
WHERE EXISTS (SELECT *
              FROM TableB
              WHERE TableB.ID1 = TableA.ID1
                AND TableB.ID2 = TableA.ID2)
于 2013-02-10T02:27:55.820 に答える
0

MSSQL では、これを行うことができます: (最も効率的)

DELETE a FROM a JOIN b ON a.ID1 = b.ID1 AND a.ID2 = b.ID2

于 2017-10-01T16:40:14.663 に答える