【问题标题】:Get rows in sequence from multiple table in SQL Server从 SQL Server 中的多个表中按顺序获取行
【发布时间】:2021-04-20 03:29:52
【问题描述】:

我想从 SQL Server 的 2 个表中按顺序获取所有行。

输出应该是第一个表的第一行,然后是第二个表的第一行, 第一个表的第二行,第二个表的第二行....等等

【问题讨论】:

    标签: sql sql-server sql-server-2012 ssms


    【解决方案1】:

    @eshirvana 的建议不会让你得到想要的。相反,它将是 table1.row1、table2.row1、table2.row2、table1.row2

    当列名和类型匹配时,您可以使用 UNION 连接两个表中的数据。我正在假设如何根据您想要的结果对数据进行排序。

    SELECT RowID, Row, z
    FROM table1 
    UNION
    SELECT *
    FROM table2
    ORDER BY z, RowID
    

    这是工作代码:

    https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=068c0fd2056cc48718345e85b74b7bba

    【讨论】:

    • RowID 似乎有差距。 ORDER BY 不能依赖它们。
    【解决方案2】:

    大概是这样的:

    select * from 
    (
    select rowID,Row,z from table1
    union all
    select rowID,Row,z from table2
    ) alltables
    order by z
    

    【讨论】:

      【解决方案3】:

      您可以尝试以下方法:

      SELECT * FROM
      (
      SELECT RowId,Row,Z,1 AS TableOrder From Table1
      UNION ALL
      SELECT RowId,Row,z,2 AS TableOrder From Table2
      )
      ORDER BY Z,TableOrder
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-08
        相关资源
        最近更新 更多