Логические операции в SQL запросе в Python
В условии выборки можно делать более сложные
комбинации с помощью команд OR
и
AND
. Работают они так же, как и их
аналоги в Python конструкции if
.
Давайте посмотрим на примерах.
Пример
Выберем юзеров с зарплатой 500
И
возрастом 23
года:
query = "SELECT * FROM users WHERE salary=500 AND age=23"
Результат выполненного кода:
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
Пример
Выберем юзеров с зарплатой 500
ИЛИ
возрастом 23
года:
query = "SELECT * FROM users WHERE salary=500 OR age=23"
Результат выполненного кода:
{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}
Пример
Выберем юзеров с зарплатой от 450
до 900
:
query = "SELECT * FROM users WHERE salary>450 AND salary<900"
Результат выполненного кода:
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}
Пример
Выберем юзеров с возрастом от 23
до 27
лет включительно:
query = "SELECT * FROM users WHERE age>=23 AND age<=27"
Результат выполненного кода:
{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}
{'id': 2, 'name': 'user2', 'age': 25, 'salary': 500}
{'id': 3, 'name': 'user3', 'age': 23, 'salary': 500}
{'id': 5, 'name': 'user5', 'age': 27, 'salary': 500}
Пример
Сложные комбинации команд OR
и
AND
можно группировать с помощью
круглых скобок, чтобы показать приоритет
условий:
query = "SELECT * FROM users WHERE (age<20 AND age>27) OR (salary>300 AND salary<500)"
Результат выполненного кода:
{'id': 1, 'name': 'user1', 'age': 23, 'salary': 400}
Практические задачи
Выберите юзеров в возрасте от 25
(не включительно) до 28
лет
(включительно).
Выберите юзера user1
.
Выберите юзеров user1
и user2
.
Выберите всех, кроме юзера user3
.
Выберите всех юзеров в возрасте 27
лет или с зарплатой 1000
.
Выберите всех юзеров в возрасте 27
лет или с зарплатой не равной 400
.
Выберите всех юзеров в возрасте от 23
лет (включительно) до 27
лет (не
включительно) или с зарплатой 1000
.
Выберите всех юзеров в возрасте от 23
лет до 27
лет или с зарплатой от
400
до 1000
.