MySQLCASEステートメント_
MySQLCASEステートメント
CASE
ステートメントは条件を通過し、最初の条件が満たされたときに値を返します(if-then-elseステートメントのように)。したがって、条件が真になると、読み取りを停止して結果を返します。ELSE
真の条件がない場合は、句の値を返します。
パーツがなくELSE
、条件が真でない場合は、NULLを返します。
CASE構文
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN
conditionN THEN resultN
ELSE result
END;
デモデータベース
以下は、Northwindサンプルデータベースの「OrderDetails」テーブルからの抜粋です。
OrderDetailID | OrderID | ProductID | Quantity |
---|---|---|---|
1 | 10248 | 11 | 12 |
2 | 10248 | 42 | 10 |
3 | 10248 | 72 | 5 |
4 | 10249 | 14 | 9 |
5 | 10249 | 51 | 40 |
MySQLCASEの例
次のSQLは条件を通過し、最初の条件が満たされたときに値を返します。
例
SELECT OrderID, Quantity,
CASE
WHEN Quantity > 30
THEN 'The quantity is greater than 30'
WHEN Quantity = 30 THEN 'The
quantity is 30'
ELSE 'The quantity is under 30'
END AS QuantityText
FROM OrderDetails;
次のSQLは、市ごとに顧客を注文します。ただし、CityがNULLの場合は、国別に並べ替えます。
例
SELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
WHEN City IS NULL THEN Country
ELSE City
END);