【问题标题】:How to hardcode row in Select statement?如何在 Select 语句中对行进行硬编码?
【发布时间】:2014-04-07 10:59:58
【问题描述】:
Select 0 AS A, 1 AS B FROM someTable

基于上述查询,我​​可以硬编码列数和数据,而不管 someTable 中的数据是什么,而行数取决于 someTable 中的行数。 我想知道如果我也想硬编码行数该怎么办?

比如 someTable 只有 10 行,我应该如何修改上面的查询,让我可以有 1000 行记录?

【问题讨论】:

    标签: sql ssms hardcode


    【解决方案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):

    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 行。

    【讨论】:

      猜你喜欢
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多