【问题标题】:How to get max value from 2 tables如何从 2 个表中获取最大值
【发布时间】:2011-10-16 10:16:46
【问题描述】:

使用 Sql 服务器

我想从两个表中获取最大值

表1

ID Total

101 100
102 600
.....

表2

ID Total

101 300
102 400
....

我想根据 id 从 2 个表中获取最大值

预期输出

ID Total

101 300 (max value in table2)
102 600 (max value in table1)
....
...

如何查询

需要查询帮助

【问题讨论】:

    标签: sql sql-server sql-server-2005


    【解决方案1】:
    SELECT
       ID, MAX(Total)
    FROM
        (
        SELECT ID, Total FROM Table1
        UNION ALL
        SELECT ID, Total FROM Table2
        ) foo
    GROUP BY
       ID
    

    【讨论】:

      【解决方案2】:
      ; with
      q_00 as (
      select id, Total from Tbl_1
      union all
      select id, Total from Tbl_2
      )
      select id, max(Total)
      from q_00
      group by id
      order by id ;
      

      【讨论】:

        【解决方案3】:

        另一个值得考虑的选择可能是

        WITH T(ID, Total)
             AS (SELECT ID,
                        MAX(Total)
                 FROM   Table1
                 GROUP  BY ID
                 UNION ALL
                 SELECT ID,
                        MAX(Total)
                 FROM   Table2
                 GROUP  BY ID)
        SELECT ID,
               MAX(Total) AS Total
        FROM   T
        GROUP  BY ID  
        

        如果ID,Total 在两个表中被索引,这可能会给出更好的计划(未经测试)

        【讨论】:

        • 虽然现在已经过测试,但两者之间的差异非常小,可以通过调整每个 Total 组中的 Total 行数来调整每个 ID 组的数量。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-24
        • 2014-09-14
        • 2020-03-29
        • 1970-01-01
        • 2017-02-08
        相关资源
        最近更新 更多