根据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中有没有类似于表格的文字?
答案 0 :(得分:43)
如果你有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
子句的括号。
答案 1 :(得分:0)
我的理解是SELECT * FROM VALUES ...
是标准SQL,但微软的T-SQL不支持它。据我所知,T-SQL仅支持VALUES ...
语句中的INSERT
。 (即便如此,从SQL Server 2008开始只支持多个值...)
您可以在此处查看SELECT
语句FROM
子句的语法:http://msdn.microsoft.com/en-us/library/ms177634%28v=SQL.100%29.aspx