我正在使用Microsoft SQL Server,发现自己处于困境中。我想基本上在订单上做订单。我现在使用的SQL查询是:使用Microsoft SQL Server获得列的10个最高递增值
SELECT top 10 labelid
FROM mytable
ORDER BY labelid DESC
这将按降序返回labelid列的前10个值。然而,我想要查询前10个值,并且结果按升序排列。
有没有简单的方法做到这一点,而不使用程序/ plsql/etc?
我正在使用Microsoft SQL Server,发现自己处于困境中。我想基本上在订单上做订单。我现在使用的SQL查询是:使用Microsoft SQL Server获得列的10个最高递增值
SELECT top 10 labelid
FROM mytable
ORDER BY labelid DESC
这将按降序返回labelid列的前10个值。然而,我想要查询前10个值,并且结果按升序排列。
有没有简单的方法做到这一点,而不使用程序/ plsql/etc?
你只需要使用您的查询作为派生表:
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 Server时和其他有他们的平台是Common Table Expressions [CTE]而当你正在查找/学习也检查窗口函数,因为它们是有帮助的。
;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
“plsql”是** Oracle **的程序化SQL代码语言 - 这不适用于SQL Server .... SQL Server等效它** T-SQL **(或Transact- SQL) –