PythonにおけるSQLクエリの論理演算
選択条件では、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 までの
すべてのユーザーを選択してください。