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

SQL OR

Мы пытались придумать что-то остроумное о использовании оператора OR в запросе, но ничего не смогли придумать 🤷

Используйте оператор OR в предложении WHERE, чтобы фильтровать по нескольким значениям полей или выполнять более сложные объединения по нескольким полям.

Как использовать оператор OR

Оператор OR технически является булевым оператором, что означает, что он возвращает результаты, которые выполняются как истинные. Его легко использовать, и вы обычно увидите его в предложении WHERE для соответствующей фильтрации результатов запроса или в объединениях, которые включают несколько возможных полей.

Пример оператора OR

select
order_id,
customer_id,
order_date,
status,
amount
from {{ ref('orders') }}
where status = 'shipped' or status = 'completed'
limit 3

Этот запрос, использующий таблицу orders из Jaffle Shop, вернет результаты, где статус заказа отправлен или завершен:

order_idcustomer_idorder_datestatusamount
232018-01-02completed20.0000
3942018-01-04completed1.00000
4502018-01-05completed25.0000

Синтаксис оператора OR в Snowflake, Databricks, BigQuery и Redshift

Snowflake, Databricks, Google BigQuery и Amazon Redshift поддерживают оператор OR, и синтаксис выглядит одинаково на каждой платформе. Вы можете увидеть, что оператор OR заменяется на более подходящий оператор IN.

Сценарии использования OR

Мы чаще всего видим использование операторов OR в запросах и моделях dbt для:

  • Возврата результатов для полей с различными значениями
  • Объединения таблиц по нескольким полям с использованием оператора OR (предупреждение: это может быть немного пугающе и неэффективно, поэтому используйте операторы OR в объединениях очень осторожно и рассмотрите возможность рефакторинга вашей работы, чтобы избежать таких сценариев)

Это не исчерпывающий список того, где ваша команда может использовать OR в вашей работе с данными, но он содержит некоторые общие сценарии, с которыми аналитики сталкиваются ежедневно.

0