Перейти к основному содержимому
Перейти к основному содержимому

Оператор INTERSECT

Оператор INTERSECT возвращает только те строки, которые являются результатом обоих запросов: первого и второго. Запросы должны совпадать по количеству столбцов, порядку и типу. Результат INTERSECT может содержать дубликаты строк.

Несколько операторов INTERSECT выполняются слева направо, если не указаны круглые скобки. Оператор INTERSECT имеет более высокий приоритет, чем операторы UNION и EXCEPT.

Условие может быть любым выражением, основанным на ваших требованиях.

Примеры

Вот простой пример, который пересекает числа от 1 до 10 с числами от 3 до 8:

Результат:

INTERSECT полезен, если у вас есть две таблицы, которые содержат общий столбец (или столбцы). Вы можете пересекать результаты двух запросов, пока результаты содержат одинаковые столбцы. Например, предположим, у нас есть несколько миллионов строк исторических данных о криптовалютах, содержащих цены и объем торгов:

Теперь предположим, что у нас есть таблица с именем holdings, которая содержит список криптовалют, которыми мы владеем, а также количество монет:

Мы можем использовать INTERSECT, чтобы ответить на вопросы, такие как "Какие монеты мы владеем, которые торговались по цене выше $100?":

Результат:

Это означает, что в какой-то момент времени Bitcoin и Ethereum торговались выше 100,аDOGEFIиBitcoinDiamondникогданеторговалисьвыше100, а DOGEFI и Bitcoin Diamond никогда не торговались выше 100 (по крайней мере, используя данные, которые у нас есть в этом примере).

INTERSECT DISTINCT

Обратите внимание, что в предыдущем запросе у нас было несколько вкладок Bitcoin и Ethereum, которые торговались выше $100. Было бы неплохо удалить дублирующиеся строки (поскольку они лишь повторяют то, что мы и так знаем). Вы можете добавить DISTINCT к INTERSECT, чтобы устранить дублирующиеся строки из результата:

Результат:

Смотрите также