SQL の If-Then-Else ロジック
SQL では、CASE ステートメントを使用して条件付きロジックを実行する機能が提供されます。 if-then-else 構造の直接的な構文は提供されませんが、一連の条件と対応するアクションを定義できます。
問題:
次のように仮定します。特定の優先順位に基づいてテーブルからデータを選択したい:
CASE を使用した解決策:
SELECT product, price FROM table1 WHERE CASE WHEN EXISTS (SELECT 1 FROM table1 WHERE project = 1) THEN 1 WHEN EXISTS (SELECT 1 FROM table1 WHERE customer = 2) THEN 2 WHEN EXISTS (SELECT 1 FROM table1 WHERE company = 3) THEN 3 ELSE NULL END IS NOT NULL;
このクエリは、各条件を順番に評価します。プロジェクトにレコードがある場合は、一致する行を返します。それ以外の場合は、顧客、次に会社をチェックします。いずれかの条件を満たす行のみが選択されます。
例:
次の表にはサンプル データが含まれています:
product | price | project | customer | company |
---|---|---|---|---|
A | 10 | 1 | NULL | NULL |
B | 20 | NULL | 2 | NULL |
C | 30 | NULL | NULL | 3 |
実行中クエリは次の結果を返します:
product | price |
---|---|
A | 10 |
project = 1 の行があるため、他の条件は無視され、製品「A」の行が選択されます。
以上がSQL の CASE ステートメントを使用して If-Then-Else ロジックを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。