2017-08-02 599 views
7

以下是有效的SQL语法:名称为SELECT * FROM(VALUES(X,Y))AS TableLiteral(Col1中,col2的)

SELECT * 
    FROM (VALUES ('p','q'),('x','y')) AS TableLiteral(Col1, Col2) 

,并返回表:

| Col1 | Col2 
---------------- 
1 | p | q 
2 | x | y 

这语法可以进一步用于CTE等。

是否有这样的名称? 我一直称他们为“TableLiterals”类比字符串文字和正则表达式文字。

有没有一个术语会被广泛认可。

+2

[表值构造函数](https://docs.microso ft.com/en-us/sql/t-sql/queries/table-value-constructor-transact-sql) –

+0

我认为你正在寻找表值构造函数 – scsimon

回答

6

它被称为:Table Value Constructor

指定一组行值表达式来构造插入表中。 Transact-SQL表值构造器允许在单个DML语句中指定多行数据。 可以在INSERT语句的VALUES子句中,MERGE语句的USING子句中以及FROM子句中的派生表的定义中指定表值构造函数。

VALUES()[,... n]的有关ANSI标准

更多信息:F641, Row and table constructors select without from

相关问题