SELECT
描述
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
描述
功能类似于if...else if...else语句。如果某个when条件为TRUE,则取对应的then表达式的值;如果所有when条件都为FALSE,则取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分支。
文档内容是否对您有帮助?