Ответ 1
Как насчет: (не слишком уверен, работает ли это в SQLite)
DELETE FROM TableA
WHERE EXISTS (SELECT *
FROM TableB
WHERE TableB.ID1 = TableA.ID1
AND TableB.ID2 = TableA.ID2)
У меня есть таблица 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.
Любые предложения очень ценятся.
Как насчет: (не слишком уверен, работает ли это в SQLite)
DELETE FROM TableA
WHERE EXISTS (SELECT *
FROM TableB
WHERE TableB.ID1 = TableA.ID1
AND TableB.ID2 = TableA.ID2)
В MSSQL вы можете сделать это: (наиболее эффективно)
УДАЛИТЬ a Из JOIN b ON a.ID1 = b.ID1 И a.ID2 = b.ID2
DELETE a FROM TableA a INNER JOIN TableB b ON a.ID1=b.ID1 AND a.ID2=b.ID2