我的表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中出现的表A中的所有行(与ID1和ID2完全匹配)。理论上似乎很简单,但我对EXISTS声明或其他方法并不满意。我正在使用SQLite。
任何建议都非常感谢。
答案 0 :(得分:24)
怎么样:(不太确定这是否适用于SQLite)
DELETE FROM TableA
WHERE EXISTS (SELECT *
FROM TableB
WHERE TableB.ID1 = TableA.ID1
AND TableB.ID2 = TableA.ID2)
答案 1 :(得分:0)
在MSSQL中,您可以这样做:(效率最高)
删除a 从一个 JOIN b ON a.ID1 = b.ID1 AND a.ID2 = b.ID2
答案 2 :(得分:0)
在MS-SQL中使用 EXISTS 删除可以这样实现:
DELETE TableA FROM TableA
WHERE EXISTS (SELECT *
FROM TableB
WHERE TableB.ID1 = TableA.ID1
AND TableB.ID2 = TableA.ID2)
我只是假设这也将在sqlite中起作用
答案 3 :(得分:-1)
DELETE a FROM TableA a INNER JOIN TableB b ON a.ID1=b.ID1 AND a.ID2=b.ID2