Подтвердить что ты не робот

Удалить строку из таблицы, где совпадение существует во второй таблице

У меня есть таблица 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.

Любые предложения очень ценятся.

4b9b3361

Ответ 1

Как насчет: (не слишком уверен, работает ли это в SQLite)

DELETE FROM TableA
WHERE EXISTS (SELECT *
              FROM TableB
              WHERE TableB.ID1 = TableA.ID1
                AND TableB.ID2 = TableA.ID2)

Ответ 2

В MSSQL вы можете сделать это: (наиболее эффективно)

УДАЛИТЬ a  Из  JOIN b ON a.ID1 = b.ID1       И a.ID2 = b.ID2

Ответ 3

DELETE a FROM TableA a INNER JOIN TableB b ON a.ID1=b.ID1 AND a.ID2=b.ID2