一、独立使用
VALUES (row)[, (row), …];row ::= column [, column, …]
二、派生表使用
SELECT select_list FROM (VALUES (row)[, (row), …]) [AS alias[(col_alias1, …)]];row ::= column [, column, …]
三、使用规则与约束
·结构一致性: 每一行 (row) 必须包含相同数量的列 (column)。
·类型兼容性: 各行中对应列的数据类型必须相互兼容(如数值型与浮点型可兼容,日期字符串与时间戳可兼容)。
·命名机制:
·若未显式指定派生表名,系统默认分配别名 expr$0。建议使用 AS 关键字显式命名以增强代码可读性。
·默认列名遵循 派生表名.expr$N 规范(其中 N 为从 0 开始起始的列索引)。
·内容灵活: 列的内容可以是常量、变量或表达式。
四、示例
构造匿名数据集(默认命名):
— 构造一个 2 行 3 列的派生表,使用默认列命名SELECT * FROM (VALUES (4,5,6), (7,8,9));– 输出:– +——————-+——————-+——————-+– | `expr$0`.`expr$0` | `expr$0`.`expr$1` | `expr$0`.`expr$2` |– +——————-+——————-+——————-+– | 4 | 5 | 6 |– | 7 | 8 | 9 |– +——————-+——————-+——————-+
指定派生表别名:
— 通过 AS 关键字定义表名,简化引用路径。SELECT * FROM (VALUES (4,5,6), (7,8,9)) AS t(x,y,z);– 输出结果:– +————–+————–+————–+– | `t`.`expr$0` | `t`.`expr$1` | `t`.`expr$2` |– +————–+————–+————–+– | 4 | 5 | 6 |– | 7 | 8 | 9 |– +————–+————–+————–+
自定义列别名:
— 在定义表名的同时,通过括号显式指定每一列的名称。SELECT * FROM (VALUES (4,5,6), (7,8,9)) AS t(x, y, z);– 输出结果:– +——+——+——+– | x | y | z |– +——+——+——+– | 4 | 5 | 6 |– | 7 | 8 | 9 |– +——+——+——+