如何在Select语句中硬编码行?

时间:2014-04-07 10:59:58

标签: sql ssms hardcode

Select 0 AS A, 1 AS B FROM someTable

基于上面的查询,无论someTable中的数据是什么,我都可以硬编码列数和数据,行数取决于someTable中的行数。 我想知道如果我想对行数进行硬编码我该怎么办?

例如,如果someTable只有10行,我应该如何修改上述查询,以便我可以拥有1000行记录?

1 个答案:

答案 0 :(得分:1)

你可以保持交叉加入你的桌子:

SELECT  TOP 1000 0 AS A, 1 AS B 
FROM    someTable a
        CROSS JOIN someTable b
        CROSS JOIN someTable c
        CROSS JOIN someTable d;

我假设您已经使用SSMS标记这是SQL Server,如果不是,您可能需要使用LIMIT

SELECT  0 AS A, 1 AS B 
FROM    someTable a
        CROSS JOIN someTable b
        CROSS JOIN someTable c
        CROSS JOIN someTable d
LIMIT 1000;

这里的问题是,如果SomeTable只有1行,那么无论你加入多少次,你仍然只有一行。如果您实际上并不关心表中的值,并且只想使用它来生成行,那么您可以使用您知道的行数超出您需要的系统视图(再次假定SQL Server): / p>

SELECT  TOP 1000 0 AS A, 1 AS B
FROM    sys.all_objects a;

即使在空数据库sys.all_objects上也会有2083行。如果您可能需要更多内容,只需CROSS JOIN个观看次数:

SELECT  TOP 1000 0 AS A, 1 AS B
FROM    sys.all_objects a
        CROSS JOIN sys.all_objects b;

这将为您提供4,338,889行。