Skip to main content

Як працювати з пріоритетом логічних операторів?

Пріоритет логічних операторів (NOT, AND, OR) визначає, у якому порядку SQL перевірятиме умови у фільтрі WHERE.

Якщо порядок не задати явно - SQL виконає їх за своїми правилами, а не за твоєю логікою.

Стандартний порядок пріоритетів

  1. NOT - виконується першим;
  2. AND - виконується другим;
  3. OR - виконується останнім.

Приклад без дужок

sql
SELECT * FROM employees WHERE NOT city = 'Kyiv' AND department = 'IT' OR salary > 80000;

SQL виконає так:

  1. Спершу застосує NOT city = 'Kyiv';
  2. Потім перевірить AND department = 'IT';
  3. І лише потім OR salary > 80000.

Тобто обере всіх IT-шників не з Києва чи всіх, у кого зарплата більша за 80 000 - навіть якщо вони з Києва й не з IT.

Як змінити пріоритет

Щоб SQL виконував умови в потрібному порядку, використовують дужки:

sql
WHERE NOT (city = 'Kyiv' AND department = 'IT')

Тепер NOT застосовується до всього виразу всередині дужок.

Ще приклад:

sql
WHERE (city = 'Kyiv' OR city = 'Lviv') AND salary > 70000;

Спершу перевіряться міста, потім фільтр за зарплатою.

Коротко:

ОператорПріоритетПриклад використання
NOT1NOT city = 'Kyiv'
AND2age > 18 AND city = 'Kyiv'
OR3city = 'Kyiv' OR city = 'Lviv'

Підсумок:

  • SQL завжди йде за пріоритетом: NOTANDOR.
  • Щоб задати свій порядок, став дужки.
  • Краще завжди використовувати дужки у складних фільтрах - це робить код читабельним і передбачуваним.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.