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章
+------+------+

我想删除表 A 中出现在表 B 中的所有行(与 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 回答
2
DELETE a FROM TableA a INNER JOIN TableB b ON a.ID1=b.ID1 AND a.ID2=b.ID2
于 2017-10-02T04:55:05.250 回答
0

在 MSSQL 中,您可以这样做:(最有效)

从 a.ID1 = b.ID1 和 a.ID2 = b.ID2 的连接 b 中删除 a

于 2017-10-01T16:40:14.663 回答