SQLite: внутреннее объединение в наборе результатов - PullRequest
0 голосов
/ 14 февраля 2020

В SQLite, есть ли способ выполнить внутреннее объединение некоторой таблицы в наборе результатов?

Вроде как гипотетический запрос :

SELECT el1,el2 FROM pairs
INNER JOIN (<some_query> AS result) ON el1 IN result AND el2 IN result;

Избыточный рабочий запрос должен выглядеть следующим образом:

SELECT el1,el2 FROM pairs
WHERE el1 IN (<some_query>) AND el2 IN (<same_query>);

Где <some_query>:

SELECT el FROM set1 INNER JOIN set2 ON set1.el=set2.el;

Очевидно, что последний выглядит очень дорого.

Что будет предпочтительным запросом?

1 Ответ

1 голос
/ 14 февраля 2020

Лог c из some_query может быть записан более эффективно с помощью INTERSECT:

SELECT el FROM set1
INTERSECT
SELECT el FROM set2

, и если вы используете CTE для some_query тогда по вашему требованию вы можете сделать это:

WITH cte AS (
  SELECT el FROM set1
  INTERSECT
  SELECT el FROM set2
)
SELECT el1, el2 
FROM pairs
WHERE el1 IN cte AND el2 IN cte
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...