开发者社区 问答 正文

MPP计算引擎  VALUES是什么?


VALUES语法目前只在MPP计算引擎模式下支持。

语法描述


INSERT INTO table_name [ ( column [, ... ] ) ] query
其中 row 是一个单独的表达式或者:
( column_expression [, ...] )

说明


定义一个常数内联表
VALUES 可以在任何允许使用查询语句的地方使用(例如,SELECT, INSERT语句中的 FROM 子句,甚至在语句的第一层级)。VALUES 创建了一个没有列名的匿名表,但是该表的表名和列名可以通过使用带有列别名的 AS 子句定义。

举例


返回一个表,包括一列三行数据:
VALUES 1, 2, 3
返回一个表,包含两列三行数据:<PRE prettyprinted? linenums>

  1. VALUES
  2. (1, 'a'),
  3. (2, 'b'),
  4. (3, 'c')

返回一个表,包含 id 和 name 两个列:<PRE prettyprinted? linenums>
  1. SELECT * FROM (
  2. VALUES
  3.     (1, 'a'),
  4.     (2, 'b'),
  5.     (3, 'c')
  6.     ) AS t (id, name)

展开
收起
nicenelly 2017-10-26 15:29:07 2435 分享 版权
阿里云 AI 助理回答

问题描述: 用户希望了解VALUES语法的使用场景与具体应用方式,特别是在MPP计算引擎模式下的支持情况。

查询背景: VALUES语句在SQL中用于生成一个常量表,作为数据源参与查询或插入操作。它可以在多种SQL上下文中使用,如SELECTINSERT等,尤其适用于构造小型临时数据集以进行快速查询或分析。

VALUES语法说明:

  • 基本用法

    VALUES (expression [, ...] ) [, ...]
    
  • MPP计算引擎支持VALUES语法目前专为MPP(大规模并行处理)计算引擎模式设计提供支持。这意味着在采用MPP架构的数据库系统中,可以充分利用其并行处理能力高效地处理通过VALUES构造的数据集。

  • 构造表结构:通过在VALUES后紧跟表达式列表,并可选地使用AS子句指定表名和列名,可以构建具有明确结构的匿名表。

    示例:

    SELECT * FROM (VALUES (1, 'a'), (2, 'b'), (3, 'c')) AS t (id, name);
    
  • 灵活应用VALUES不仅限于直接插入数据,还能嵌入到SELECTINSERT INTOFROM子句中,甚至作为独立的查询结果返回。

示例应用:

  1. 简单值集合

    VALUES 1, 2, 3;
    
  2. 多列数据

    VALUES(1, 'a'),(2, 'b'),(3, 'c');
    
  3. 带列名的表结构

    SELECT * FROM (VALUES (1, 'a'), (2, 'b'), (3, 'c')) AS t (id, name);
    

注意事项: - 确认所使用的数据库系统支持MPP架构,并且版本兼容VALUES的高级用法。 - 当利用VALUES构造大量数据时,注意监控内存使用,避免资源耗尽。 - 在执行INSERT INTO操作时,考虑数据类型匹配与目标表结构的一致性,以及是否启用严格插入模式以防止数据过滤问题。

通过上述说明与示例,您可以根据实际需求,在MPP计算引擎环境下有效利用VALUES语法来构造数据、执行查询或数据插入操作。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答