可以在SQL中选择多个常量到多个resultset行中吗?

可以在SQL中选择多个常量到多个resultset行中吗?,sql,sql-server,Sql,Sql Server,我知道我可以“选择5作为foo”并获得结果集: foo 五, (1排) …有没有办法“选择5,6,7作为foo”并获得结果集: foo 五, 六, 七, (3排) …我很清楚,这不是典型的DB用法,任何可以想象的用法都最好使用更普通的技术。更多的是一个技术问题 注意:我知道我可以使用一个大的工会总列表——我正在尝试寻找其他的东西。使用数字表很容易,下面是一个示例 select number as foo from master..spt_values where type = 'p' and

我知道我可以“选择5作为foo”并获得结果集:

foo

五,

(1排)

…有没有办法“选择5,6,7作为foo”并获得结果集:

foo

五,

六,

七,

(3排)

…我很清楚,这不是典型的DB用法,任何可以想象的用法都最好使用更普通的技术。更多的是一个技术问题


注意:我知道我可以使用一个大的工会总列表——我正在尝试寻找其他的东西。

使用数字表很容易,下面是一个示例

select number as foo
 from master..spt_values
where type = 'p'
and number between 5 and 7
或者如果您想在中使用

select number as foo
 from master..spt_values
where type = 'p'
and number in(5,6,7)

使用这些和其他技术是可能的(任何一个为数据库开发人员的职位面试过的人都会告诉你)。但通常在另一个抽象层中更容易做到这一点(而且工具更合适);i、 e.您的DAL或更高版本,将数据视为某种类型的列表。尽管rdbms产品提供了促进者,但这是对关系概念模型的扭曲。

只是为了好玩,不会梦想将其用于实际:

WITH numbers AS
(
    SELECT ROW_NUMBER() OVER (ORDER BY name) AS 'RowNumber'
    FROM sys.all_objects
) 
SELECT RowNumber 
FROM numbers 
WHERE RowNumber BETWEEN 5 AND 7;
WITH numbers AS
(
    SELECT ROW_NUMBER() OVER (ORDER BY name) AS 'RowNumber'
    FROM sys.all_objects
) 
SELECT RowNumber 
FROM numbers 
WHERE RowNumber BETWEEN 5 AND 7;