SELECT 语句说明

最近更新时间:2026-06-30 16:45:31

我的收藏
本文为您介绍在 TDSQL Boundless 只读分析实例中,支持使用的 SELECT 查询语句及相关说明。

对象权限说明

在只读分析实例中,仅已完全加载到列存只读分析引擎的数据对象可以进行数据查询。查询数据需要拥有对应数据表的 SELECT 权限,若无权限,请通过 TDSQL Boundless 账号管理进行对象权限赋予,操作请参见 修改账号权限

SELECT 语句

只读分析实例支持使用 SELECT 语句进行数据查询,语法骨架如下所示。
[WITH [RECURSIVE] cte_name [(col_name [, col_name] ...)] AS (subquery)
[, cte_name [(col_name [, col_name] ...)] AS (subquery)] ...]
SELECT
[ALL | DISTINCT | DISTINCTROW]
select_expr [, select_expr] ...
[FROM table_references
[WHERE where_condition]
[GROUP BY {col_name | expr | position} [, ...]
[WITH ROLLUP]]
[HAVING where_condition]
[WINDOW window_name AS (window_spec)
[, window_name AS (window_spec)] ...]
[ORDER BY {col_name | expr | position} [ASC | DESC] [, ...]]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]]
只读分析实例支持的 SELECT 语法特性如下:
支持 WITH 公共表表达式(CTE),包括 WITH RECURSIVE 递归 CTE。
支持 UNIONUNION ALLINTERSECTINTERSECT ALLEXCEPTEXCEPT ALL 集合运算。
支持 INNER JOINLEFT JOINRIGHT JOINCROSS JOINSTRAIGHT_JOIN 表连接。
支持窗口函数(OVER 子句)。
支持标量子查询、IN 子查询、EXISTS 子查询及相关子查询。
支持 GROUP BY ... WITH ROLLUP 多维聚合。

SELECT 语句中不生效或不支持的子句

下文介绍 MySQL 完整 SELECT 语法中在只读分析实例中不生效或不支持的语句单元

不生效但不影响执行的子句

下列关键字或选项在只读分析实例中不生效,但保留这些关键字不会影响 SQL 语句的执行结果。
HIGH_PRIORITY:用于设置 SELECT 语句执行优先级。只读分析实例基于自身的列式执行优化器进行调度,该关键字不生效。
STRAIGHT_JOIN(作为 SELECT 选项使用时):用于强制优化器按照子句中列出的顺序进行表连接。只读分析实例完全基于自身的列式执行优化器进行执行计划选择,该关键字不生效。
SQL_SMALL_RESULTSQL_BIG_RESULTSQL_BUFFER_RESULTSQL_NO_CACHESQL_CALC_FOUND_ROWS:上述查询选项在只读分析实例中均不生效。

不支持且会导致语句执行失败的子句

下列子句在只读分析实例中不支持,使用后将导致 SQL 语句执行失败。
PARTITION (partition_list) 子句:只读分析实例当前不支持分区表的查询路径,使用该子句的查询将执行失败。
FOR UPDATE 子句:只读分析实例面向只读分析场景,不支持行级排他锁,使用该子句的查询将执行失败。
LOCK IN SHARE MODE 子句:只读分析实例默认不支持行级共享锁,使用该子句的查询将执行失败。
INTO DUMPFILE 子句:在语法解析阶段即报错。
INTO @variable 子句:在语法解析阶段即报错。
说明:
LOCK IN SHARE MODE 子句可通过将系统变量 libra_enable_noop_functions 设置为 ON 启用为空操作(noop)兼容模式,启用后该子句在语法上被接受但不会产生实际加锁效果。
INTO OUTFILE 子句在语法上可被解析,执行时还需具备相应的 FILE 权限及环境配置,建议在只读分析实例中避免使用。