Sql 如何从两个表中获取最大值
使用Sql Server 我想从两个表中获取最大值 表1Sql 如何从两个表中获取最大值,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)
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