使用 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
我正在使用 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