Приоритеты операторов в SQL запросах

Приоритеты операторов в SQL запросах Программирование, IT, Собеседование, SQL, Приоритеты

Всем привет, друзья!
Как вы думаете, какие строки будут отобраны в результате следующего запроса:

SELECT *
FROM VOUCHERS
WHERE CLIENT_ID = 1
AND DOC_TYPE = 2
OR FILIAL_ID = 3

те, где CLIENT_ID = 1 и ещё такие строки, где либо DOC_TYPE = 2 либо FILIAL_ID = 3

ИЛИ, ВСЁ ЖЕ,

те, где CLIENT_ID = 1 и одновременно в столбце DOC_TYPE = 2 и ещё такие строки, где FILIAL_ID = 3 и не важно какой CLIENT_ID и DOC_TYPE?

Здесь в силу вступает правило приоритета операторов. OR разделяет условия во WHERE на два: будут отобраны строки у которых CLIENT_ID = 1 и одновременно с этим в столбце DOC_TYPE = 2 и не важно какой FILIAL_ID. И потом к полученным данным ещё будут отобраны строки у которых FILIAL_ID = 3 вне зависимости от значений в других столбцах.

Если нужно отобрать строки с CLIENT_ID = 1 и в дополнении у них должен быть либо DOC_TYPE = 2 либо FILIAL_ID = 3, то мы можем воспользоваться скобками:

SELECT *
FROM VOUCHERS
WHERE CLIENT_ID = 1
AND (DOC_TYPE = 2 OR FILIAL_ID = 3)

Для наглядности, всё что после AND, я вынес на отдельную строку. Благодаря скобкам, всё что в них, будет выполняться как единое целое. Итак: будут отобраны строки со значением CLIENT_ID = 1, и из всех полученных строк, удовлетворяющих этому условию, останутся те, у которых либо DOC_TYPE = 2, либо FILIAL_ID = 3.

Буду рад если понравилась статья! Не забудьте поставить лайк и подписаться на мой канал, если Вы еще не подписаны. Так Вы поддерживаете нашу работу.

Лига программистов

1.5K постов11.4K подписчика

Добавить пост

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества