使用 Microsoft SQL Server 获取列的 10 个最高升序值

Get 10 highest ascending values of a column using Microsoft SQL Server

我正在使用 Microsoft SQL 服务器,发现自己陷入了困境。我想基本上在订单上做一个订单。我当前的 SQL 查询是:

SELECT top 10 labelid 
FROM mytable 
ORDER BY labelid DESC

这将return labelid 列的前 10 个值按降序排列。但是,我想查询前 10 个值,并让结果按升序排列。

有没有不使用 procedures/plsql/etc 的简单方法?

您只需将查询用作派生的 table:

SELECT *
FROM (SELECT TOP 10 labelid 
      FROM mytable 
      ORDER BY labelid DESC) A
ORDER BY labelid;
 Select * from (
  SELECT top 10 labelid FROM mytable ORDER BY labelid DESC) order by labelid

Lamak 的解决方案很棒,派生表也很有趣,但是在使用 Sql 服务器和其他拥有它们的平台时组织代码的一种非常有用的方法是 Common Table 表达式 [CTE] 在您查看的同时 up/learning 还可以查看 Window 函数,因为它们很有用。

;WITH cte AS (
    SELECT
       labelid 
       ,ROW_NUMBER() OVER (ORDER BY labelid DESC) as RowNum
    FROM
       mytable 
)

SELECT *
FROM
    cte
WHERE
    RowNum <= 10
ORDER BY
    lableid