Оператор INTERSECT
Оператор INTERSECT возвращает только те строки, которые являются результатом выполнения как первого, так и второго запросов. Запросы должны совпадать по количеству колонок, порядку и типу. Результат INTERSECT может содержать дублирующиеся строки.
Несколько операторов INTERSECT выполняются слева направо, если не указаны скобки. Оператор INTERSECT имеет более высокий приоритет, чем операторы UNION и EXCEPT.
Условие может быть любым выражением в зависимости от ваших требований.
Примеры
Вот простой пример, который пересекает числа от 1 до 10 с числами от 3 до 8:
Результат:
INTERSECT полезен, если у вас есть две таблицы, которые имеют общую колонку (или колонки). Вы можете пересекать результаты двух запросов, при условии, что результаты содержат одни и те же колонки. Например, предположим, что у нас есть несколько миллионов строк исторических данных о криптовалюте, содержащих цены сделок и объем:
Теперь предположим, что у нас есть таблица с названием holdings, которая содержит список криптовалют, которыми мы владеем, вместе с количеством монет:
Мы можем использовать INTERSECT, чтобы ответить на вопросы, такие как "Какие монеты у нас есть, которые торговали выше $100?":
Результат:
Это означает, что в какой-то момент времени Bitcoin и Ethereum торговались выше 100 (по крайней мере, используя данные, которые у нас есть в этом примере).
INTERSECT DISTINCT
Обратите внимание, что в предыдущем запросе у нас было несколько владений Bitcoin и Ethereum, которые торговались выше $100. Было бы неплохо удалить дублирующиеся строки (поскольку они только повторяют то, что мы уже знаем). Вы можете добавить DISTINCT к INTERSECT, чтобы исключить дублирующиеся строки из результата:
Результат:
См. также