SQL 複数条件で絞り込むWHERE句とAND/OR演算子の使い方

SQLのWHERE句を使った複数条件での絞り込み方について、基本から応用まで詳しく解説します。AND/OR演算子の使い分けや優先順位など、実践的なテクニックを学べる記事です。あなたのSQLスキルを次のレベルに引き上げませんか?

SQLの複数条件検索におけるWHERE句の活用方法

WHERE句による複数条件検索の基礎知識
🔍
条件の組み合わせ

WHERE句でAND/OR演算子を使用して複数の条件を組み合わせることができます

演算子の優先順位

ANDはORより優先して評価され、カッコを使用して優先順位を変更できます

📊
効率的な検索

IN句やBETWEEN句を使用することで、複雑な条件をシンプルに記述できます

SQLの基本的な複数条件指定方法

データベースから特定の条件に合致するデータを取得する際、WHERE句は非常に重要な役割を果たします。複数の条件を指定する基本的な方法として、AND演算子とOR演算子があります。


-- AND演算子の使用例
SELECT * FROM users 
WHERE age >= 20 AND prefecture = '東京'
-- OR演算子の使用例
SELECT * FROM users 
WHERE job = '会社員' OR job = '自営業'

AND/OR演算子の優先順位と組み合わせ

複数の条件を組み合わせる際は、演算子の優先順位に注意が必要です。ANDはORより優先して評価されます。優先順位を明確にするために、カッコ()を使用することをお勧めします。


-- カッコを使用した優先順位の制御
SELECT * FROM users 
WHERE (age >= 20 AND prefecture = '東京') 
   OR (age >= 18 AND prefecture = '大阪')

IN句を使用した効率的な条件指定

複数のOR条件をまとめて指定する場合、IN句を使用すると記述がシンプルになります。


-- IN句の使用例
SELECT * FROM users 
WHERE prefecture IN ('東京', '大阪', '神奈川')
-- 複数列でのIN句の使用
SELECT * FROM users 
WHERE (prefecture, age) IN (('東京', 25), ('大阪', 30))

BETWEEN句による範囲指定

数値や日付の範囲を指定する場合、BETWEEN句を使用すると直感的に記述できます。


-- BETWEEN句の使用例
SELECT * FROM sales 
WHERE amount BETWEEN 1000 AND 5000
-- 日付範囲の指定
SELECT * FROM orders 
WHERE order_date BETWEEN '2024-01-01' AND '2024-12-31'

SQLパフォーマンスを考慮した条件指定のベストプラクティス

複数条件を使用する際は、パフォーマンスも考慮する必要があります。以下のポイントに注意しましょう:

  1. インデックスの活用
  • 頻繁に検索される列にはインデックスを作成
  • 複合インデックスの順序を考慮した条件指定
  1. 条件の順序
  • 最も絞り込める条件を先頭に配置
  • インデックスが使用できる条件を優先
  1. 実行計画の確認
  • EXPLAIN文を使用して実行計画を確認
  • 不要な全表スキャンを避ける

-- パフォーマンスを考慮した条件指定の例
SELECT * FROM users 
WHERE status = 'active'  -- インデックス列を先頭に
  AND last_login >= CURRENT_DATE - INTERVAL '7 days'
  AND prefecture IN ('東京', '大阪')
ORDER BY created_at DESC
LIMIT 100