Какой самый умный способ удалить кортежи из таблицы 1, которые находятся во второй таблице, , если вторая таблица не является частью исходной базы данных, а является результатом некоторого действительно большого запроса ?Удалить подтаблицу из таблицы, SQL
table1 *this table is a result of some query
------------- -------------
| id1 | id2 | | id1 | id2 |
------------- -------------
| 1 2 | | 5 6 |
| 3 4 | | 1 2 |
| 5 6 | | 11 12 |
| 7 8 | -------------
| 9 10 |
| 11 12 |
| 13 14 |
-------------
Я придумал
delete from table1
where id1 in (select id1 from ( really long query to get a second table))
and id2 in (select id2 from (the same really long query to get a second table));
Это работает, но я чувствую, что я делаю это слишком неправильно, и не сохраняя DRY запроса.
И как вы предлагаете работать одинаково, если в таблице 1 есть дополнительная колонка, например «somecol»?
Стандартный SQL позволит 'где (ID1, ID2) в (выберите ID1, ID2 из ...)' не знаю, если SQLite допускает, что слишком –
, к сожалению, нет, я получаю "рядом", ": синтаксическая ошибка:", но я постараюсь запомнить эту практику. – OlehZiniak
Я предлагаю вам вместо этого использовать 'EXISTS';). –