VALUES 子句

功能概述

VALUES
VALUES
子句用于构造内联的行数据,可以作为独立查询使用,也可以在
FROM
FROM
子句中作为临时表使用。常用于快速测试、构造示例数据或与
INSERT INTO
INSERT INTO
配合插入数据。

语法

-- 独立使用 VALUES (expr1 [, expr2, ...]) [, (expr1 [, expr2, ...]), ...] -- 在 FROM 子句中使用,指定表别名和列名 SELECT ... FROM VALUES (expr1 [, expr2, ...]) [, ...] AS table_alias(col1 [, col2, ...]) -- 简写形式(省略 VALUES 关键字) SELECT ... FROM (expr1 [, expr2, ...]) [, ...] AS table_alias(col1 [, col2, ...])

参数说明

  • expr
    expr
    :任意表达式,可以是字面量、函数调用或计算表达式。
  • table_alias
    table_alias
    :临时表的别名。
  • col1, col2, ...
    col1, col2, ...
    :列的别名。

使用示例

独立查询

VALUES (1, 'a'), (2, 'b'), (3, 'c'); +------+------+ | col1 | col2 | +------+------+ | 1 | a | | 2 | b | | 3 | c | +------+------+

在 FROM 子句中使用

SELECT id, name FROM VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Charlie') AS t(id, name); +----+---------+ | id | name | +----+---------+ | 1 | Alice | | 2 | Bob | | 3 | Charlie | +----+---------+

与聚合函数配合

SELECT sum(val) AS total FROM VALUES (10), (20), (30) AS t(val); +-------+ | total | +-------+ | 60 | +-------+

多列不同类型

SELECT * FROM VALUES (1, 'hello', date '2024-01-01', true), (2, 'world', date '2024-06-15', false) AS t(id, msg, dt, flag); +----+-------+------------+-------+ | id | msg | dt | flag | +----+-------+------------+-------+ | 1 | hello | 2024-01-01 | true | | 2 | world | 2024-06-15 | false | +----+-------+------------+-------+

与 INSERT INTO 配合

INSERT INTO my_table VALUES (1, 'Alice'), (2, 'Bob');

注意事项

  • 每行的列数必须一致。
  • 各行对应位置的列类型必须兼容,系统会自动推导公共类型。
  • 在 FROM 子句中使用时,建议通过
    AS table_alias(col1, col2, ...)
    AS table_alias(col1, col2, ...)
    指定列名,否则列名默认为
    col1
    col1
    col2
    col2
    等。
  • VALUES 可以与 UNION、JOIN 等组合使用。
联系我们
预约咨询
微信咨询
电话咨询
邮件咨询