使用SELECT语句模拟具有多行的表

Min*_*iel 7 sql t-sql sql-server-2008-r2

如果我可以执行以下select语句来创建具有一个值的表

 SELECT 'myname' AS 'Name' 
Run Code Online (Sandbox Code Playgroud)

这将返回一个包含column = Name和一个value = myname的表

我该如何解决这个问题,只从select语句中返回一个包含多个值的列

我不想这样做:

 DECLARE @tmp TABLE (Name varchar(50)) 

 INSERT INTO @tmp (Name) VALUES ('myname1'),('myname2') 
    SELECT * FROM @tmp
Run Code Online (Sandbox Code Playgroud)

SELECT如果可能的话,只需一份声明

mel*_*okb 8

如果您只想使用SELECT语句模拟具有多行的表,则通常可以使用UNION行来完成:

SELECT 'myname1' AS 'Name' UNION
SELECT 'myname2' UNION
SELECT 'myname3'
-- etc
Run Code Online (Sandbox Code Playgroud)

演示:http://www.sqlfiddle.com/#!3 / d41d8/ 12433


Gil*_*ilM 6

或者,您可以在SELECT中使用多个VALUES,例如:

SELECT [Name]
FROM (VALUES ('myname1'),('myname2')) AS X([name])
Run Code Online (Sandbox Code Playgroud)

  • 这是最好的方法,应该是公认的答案。 (2认同)