Условие по нескольким критериям

Условие по нескольким критериям

Иногда надо определить условие по нескольким критериям. Например, требуется выбрать все потоки с номерами больше 40 и меньше 50. В этом случае для комбинации двух условий используется логическое «И» (AND):

sqlite> SELECT * FROM streams WHERE number > 40 AND number < 50; id     number course_id start_date ---------- ---------- ---------- ---------- 1      45     2      2020-08-18 2      48     3      2020-10-02 sqlite>

 

Если потребуется выполнить поиск по нескольким значениям, то применяется логическое «ИЛИ» (OR). Например, найдём все потоки с идентификатором курса 1 или 3:

 

sqlite> SELECT * FROM streams WHERE course_id = 1 OR course_id = 3; id     number course_id start_date ---------- ---------- ---------- ---------- 2      48        3      2020-10-02 3      54     1      2020-11-12 sqlite> 

 

Поиск по диапазону значений, BETWEEN

Для поиска по диапазону значений используется ключевое слово BETWEEN, для которого определяются граничные значения через AND. Найдём потоки с номерами, лежащими в диапазоне значений между 45 и 50 включительно: 

sqlite> SELECT number, start_date FROM streams WHERE number BETWEEN 45 AND 50; number start_date ---------- ---------- 45     2020-08-18 48     2020-10-02 sqlite>

 

Команду с BETWEEN всегда можно переписать с операторами сравнения и логическим «И» в условии. Ту же логику мы получим, подкорректировав один из предыдущих примеров:

sqlite> SELECT number, start_date FROM streams WHERE number >= 45 AND number <= 50; number start_date ---------- ---------- 45     2020-08-18 48     2020-10-02 sqlite>

 

Оба варианта могут использоваться на практике, но синтаксис с BETWEEN выглядит более компактным и наглядным.

Поиск по списку значений, IN

Если есть список значений для поиска, применяется логическое «ИЛИ», как мы делали в примере выше. Найдём количество уроков по курсам «Linux. Рабочая станция» и «Основы Python»:

sqlite> SELECT lessons_amount FROM courses WHERE name = 'Linux. Рабочая станция' OR name = 'Основы Python'; lessons_amount -------------- 8             8  sqlite>

Но со списками удобнее работать, используя ключевое слово IN, для которого в скобках мы перечисляем все искомые значения:

sqlite> SELECT lessons_amount FROM courses WHERE name IN('Linux. Рабочая станция', 'Основы Python'); lessons_amount -------------- 8             8             sqlite>

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: