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

标签 c# sql-server

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

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

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

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

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

最佳答案

对于不同的前 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

对于前 10 个数字

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

关于c# - 从两个不同的表中确定 SQL Server 中的前 k 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34485847/

相关文章:

c# - CUD : What is the purpose of the two SELECT statements in a scaffolded Insert stored procedure? 的存储过程

mysql Timediff() 函数返回 0.0000

sql-server - Laravel sql server 更改模式的表名

c# - 如何使用模型中的自定义属性更改 razor View 模型中的输入元素名称属性值?

c# - 如何摆脱 Visual Studio 中的命名规则违规消息?

c# - 通过反射查找asp.net webform方法

sql-server - 如何安排 SQL Server 2016 数据库备份

sql-server - SQL : How to Store Integer value in CASE function in sql?

c# - DI 使用动态构造函数注入(inject)

c# - 如果未发送任何内容,验证将不起作用?