SELECT
説明
SELECT 文は、テーブルからデータを取得します。
すべての高度なクエリは、SELECT 文をベースにしています。このセクションでは、HA3 がサポートする基本的な SELECT 構文について説明します。高度な使用方法については、関連トピックをご参照ください。
サポートバージョン
>= Ha3 3.7.0
構文
SELECT:
SELECT [ DISTINCT ]
{ * | projectItem [, projectItem ]* }
FROM tableExpression
[ WHERE booleanExpression ]
[ GROUP BY { groupItem [, groupItem ]* } ]
[ ORDER BY { orderByItem [, OrderByItem ]* }]
[ HAVING booleanExpression ]
[ LIMIT number]
[ OFFSET number]
projectItem:
expression [ [ AS ] columnAlias ]
| tableAlias . *
例
SELECT * FROM table;
SELECT f1, f2 AS ff FROM table;
SELECT DISTINCT f FROM table;
SELECT * FROM (
SELECT f1, count(*) AS num
FROM t1
GROUP BY f1
) tt
WHERE tt.num > 100;
CASE WHEN
説明
CASE WHEN 式は、if...else if...else 文のように動作します。WHEN 条件が満たされた場合、対応する THEN 式の値を返します。いずれの WHEN 条件も満たされない場合、ELSE 式の値を返します。
サポートバージョン
>= Ha3 3.7.5
構文
CASE
WHEN condition_1 THEN expression_1
WHEN condition_2 THEN expression_2
……
ELSE expression_n
END
例
-
CASE WHENを出力式として使用する
SELECT
CASE
WHEN warehouse_id=48 THEN warehouse_id
WHEN warehouse_id=24 THEN id
ELSE wave_status
END AS aa
FROM s_wmp_package_wave
WHERE wave_status = 0
LIMIT 10;
-
CASE WHENを条件式として使用する
SELECT * FROM
(
SELECT
CASE
WHEN warehouse_id=48 THEN warehouse_id
WHEN warehouse_id=24 THEN id
ELSE wave_status
END AS aa
FROM s_wmp_package_wave
WHERE wave_status = 0
) t
WHERE t.aa > 10
LIMIT 10;SELECT *
FROM s_wmp_package_wave
WHERE CASE
WHEN warehouse_id=48 THEN warehouse_id
WHEN warehouse_id=24 THEN id
ELSE buyer_id
END > 10
AND wave_status = 0
LIMIT 10;
注意事項
-
THEN式とELSE式の値は、すべて同じデータ型である必要があります。 -
CASE WHENは、独立した式としてのみ使用できます。他の式やユーザー定義関数 (UDF) 内にネストすることはできません。以下に、サポートされていない構文の例を示します。
SELECT *
FROM s_wmp_package_wave
WHERE CASE
WHEN warehouse_id=48 THEN warehouse_id
WHEN warehouse_id=24 THEN id
ELSE buyer_id
END + wave_status> 10
LIMIT 10;
-
CASE WHENを多値フィールドと組み合わせて使用しないでください。 -
ELSE分岐を含める必要があります。