Проверка нескольких условий (операторы OR и AND)

Если в предложение WHERE нужно проверить несколько условий, то для их соединения можно использовать логические операторы AND, OR и NOT.

Оператор AND объединяет два и более условий и возвращает истинное значение только при выполнении всех условий.

IDevice IconПримеры

Найти в таблице tbl_clients данные о Bennett Sherry.

SQL:
SELECT * FROM tbl_clients
WHERE lastname='Bennett' AND name='Sherry'


Найти данные о клиентах проживающих в Сиэтле и имеющих семьи численностью более 3-х человек:

SQL:
SELECT * FROM tbl_clients
WHERE region='Seattle' AND fam_size>3


Оператор OR также связывает два или больше условий, но возвращает истинный результат при выполнении хотя бы одного условия.
IDevice IconПример
Вывести список клиентов, проживающих в Сиэтле или в Лос-Анджелесе:

SQL:
SELECT * FROM tbl_clients
WHERE region = 'Seattle' OR region='Los Angeles'


Логический оператор NOT используется для построения отрицаний и помещается перед самим выражением.
IDevice IconПример

Получить список всех клиентов, кроме тех, кто проживает Лос-Анджелесе.

SQL:
SELECT * FROM tbl_clients WHERE region != 'Los Angeles'

Или

SQL:
SELECT * FROM tbl_clients WHERE NOT region = 'Los Angeles'


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

IDevice IconПримеры

Вывести данные о всех клиентах, проживающих в Сиэтле и только о тех клиентах из Лос-Анджелеса, численность семьи которых превышает 3-х человек.

SQL:
SELECT lastname, name, region, fam_size
FROM tbl_clients
WHERE region= 'Seattle' OR region = 'Los Angeles' AND fam_size>3

Результат:

lastname name region fam_size
Stolz Barbara Seattle 6
Abbott Thomas Seattle 2
Vaughn Jeffrey Seattle 2
Sperber Gregory Seattle 3
Org Liina Los Angeles 4
Reynolds Christian Los Angeles 5
Salinas Danny Los Angeles 5
Miller Robert Los Angeles 4
Ausmees Ingrid Seattle 6
Clark Margaret Los Angeles 4
Philbrick Penny Seattle 1
.... ..... .....
...

Ограничение на количество членов семьи в предыдущем запросе применяется только к клиентам из Лос-Анджелеса, так как оператор AND выполняется перед оператором OR. Чтобы первым выполнялся оператор OR, в запросе нужно использовать скобки.

В результате выполнения следующего запроса будут данные о всех клиентах из Сиэтла и Лос-Анджелеса, имеющих семьи численностью больше 3 человек:

SQL:
SELECT lastname, name, region, fam_size
FROM tbl_clients
WHERE (region= 'Seattle' OR region = 'Los Angeles') AND fam_size>3