从两个不同的表中确定SQL Server中的前k个值

本文关键字:SQL Server 个值 两个 | 更新日期: 2023-09-27 18:28:15

我有两个表table_1table_2,每个表包含N个整数值。

要求是获取表中的Top 10整数。

考虑到N是一个大的7位数,在SQL Server中实现这一点的最有效方法是什么?

如果这是一个通用的编程问题,那么最大堆数将是解决这个问题的最佳数据结构,所以我想知道是否有一种替代方案可以在SQL Server中执行类似的功能。

我能想到的唯一其他解决方案是通过将table_2值插入到table_1中来组合这些表,发出ORDER BY子句并选择前10个。

从两个不同的表中确定SQL Server中的前k个值

对于不同的前10个数字

select top 10 
    res.value
from (
      select value from table_1
      union
      select value from table_2
) res(value)
order by res.value desc

对于排名前十的数字

select top 10 
    res.value
from (
      select value from table_1
      union all
      select value from table_2
) res(value)
order by res.value desc