[英]Are there Table Literals in Transact-SQL?
根据http://www.storytotell.org/blog/2008/11/14/literal-tables-and-updates-with-joins-in-sql.html
以下内容有效:
SELECT *
FROM VALUES
('Lisp', 50, true),
('Scheme', 30, true),
('Clojure', 1, true)
AS languages (name, age, lispy)
但它似乎不起作用。
我能得到的最好的是
With languages (name, age, lispy) as
(
select 'Lisp', 50, 'true' union all
select 'Scheme', 30, 'true' union all
select 'Clojure', 1, 'true'
)
select * from languages
它使用公用表表达式并不是很整洁。
在t-sql中有没有类似于表格的文字?
如果你有SQL Server 2008,你可以在允许派生表的任何地方使用它,尽管它只允许你拥有多达1000行: http : //msdn.microsoft.com/en-us/library/dd776382(SQL.100 )的.aspx
这是文档中的一个示例( http://msdn.microsoft.com/en-us/library/ms177634(SQL.100).aspx ):
SELECT *
FROM (
VALUES (1, 2),
(3, 4),
(5, 6),
(7, 8),
(9, 10)
) AS MyTable(a, b)
请注意VALUES
子句周围的括号。
我的理解是SELECT * FROM VALUES ...
是标准SQL,但微软的T-SQL不支持它。 据我所知,T-SQL仅支持INSERT
语句中的VALUES ...
(即便如此,从SQL Server 2008开始只支持多个值...)
您可以在此处查看SELECT
语句的FROM
子句的语法: http : //msdn.microsoft.com/en-us/library/ms177634%28v=SQL.100%29.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.