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