跳到主要内容

VALUES

描述

该语句用于返回一组单行或多行数据作为表。

VALUES 是一个表值构造函数,也可用作独立的 SQL 语句与 UNIONEXCEPTINTERSECT 等结合使用。

语法

VALUES row_constructor_list [ORDER BY column_designator] [LIMIT number]

row_constructor_list:
ROW(value_list)[, ROW(value_list)][, ...]

value_list:
value[, value][, ...]

column_designator:
column_index

参数解释

参数描述
row_constructor_list行构造函数的列表,由 ROW() 行构造函数子句组成,以逗号分隔。ROW() 不能为空,但其包含在括号中每个标量值都可以为 NULL
value_list一个或多个标量值的列表。标量值可以是字面量或解析为标量值的表达式。同一 VALUES 语句中的每个 ROW() 所包含的 value_list 中必须具有相同数量的值。
column_designator指定列,列的命名规则为 column_0column_1,...。使用可选的 ORDER BY 子句按该指定列对行进行排序。

示例

  • 使用 VALUES 输出是一张表并按指定列 column_0 排序。

    VALUES ROW(4,6,8), ROW(5,7,9), ROW(1,-2,3) ORDER BY column_0;

    示例的输出结果如下:

    +----------+----------+----------+
    | column_0 | column_1 | column_2 |
    +----------+----------+----------+
    | 1 | -2 | 3 |
    | 4 | 6 | 8 |
    | 5 | 7 | 9 |
    +----------+----------+----------+
    3 rows in set (0.012 sec)
  • VALUES 语句支持同一列中的数据为混合数据类型。

    VALUES ROW("q", 23, '2022-12-18'),  ROW(87, "x+z", 92.6), ROW(25.0009, "Well Smith", '{"a": 11, "b": 55}');

    示例的输出结果如下:

    +----------+------------+--------------------+
    | column_0 | column_1 | column_2 |
    +----------+------------+--------------------+
    | q | 23 | 2022-12-18 |
    | 87 | x+z | 92.6 |
    | 25.0009 | Well Smith | {"a": 11, "b": 55} |
    +----------+------------+--------------------+
  • VALUESUNION 一起使用,功能等效于 SELECT

    SELECT 11,22 UNION SELECT 33,44;
    +------+------+
    | 11 | 22 |
    +------+------+
    | 11 | 22 |
    | 33 | 44 |
    +------+------+
    2 rows in set (0.023 sec)

    VALUES ROW(11,22) UNION VALUES ROW(33,44);

    示例的输出结果如下:

    +----------+----------+
    | column_0 | column_1 |
    +----------+----------+
    | 11 | 22 |
    | 33 | 44 |
    +----------+----------+
    2 rows in set (0.011 sec)