Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何从两个表中获取最大值_Sql_Sql Server_Sql Server 2005 - Fatal编程技术网

Sql 如何从两个表中获取最大值

Sql 如何从两个表中获取最大值,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,使用Sql Server 我想从两个表中获取最大值 表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) .... ... 如何进行查询 需要查询帮助另一个值得考虑的选项可能是 SELECT ID, MAX(Total)

使用Sql Server

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

表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)
....
...
如何进行查询


需要查询帮助

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

SELECT
   ID, MAX(Total)
FROM
    (
    SELECT ID, Total FROM Table1
    UNION ALL
    SELECT ID, Total FROM Table2
    ) foo
GROUP BY
   ID
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
在两个表中被索引,这可能会给出一个更好的计划(未经测试)

虽然现在已经测试,但两者之间的差异非常小,可以通过调整每个
ID
组中的
Total
行数来改变。
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