2014-07-14 84 views
0

我的問題聽起來很簡單,但我還沒有找到可行的解決方案。 我需要獲得與sqlite屬性的第5個最高值的行..當然,條目是隨機的。所以它沒有排序。 我確實發現了一些sql解決方案,但顯然並不是所有的sql功能都被sqlite支持。在sqlite中獲取第n個最高值的行

在此先感謝

+0

使用SQL不是嚴格的SQLite兼容的,但表示你要完成將是有益的代碼示例。 – cpburnz

回答

1

要刪除重複,請使用DISTINCT。 爲了只得到第五值,使用OFFSET子句:

SELECT DISTINCT SomeAttribute 
FROM MyTable 
ORDER BY 1 DESC 
LIMIT 1 OFFSET 4 
+0

謝謝你...你真的救了我很多工作..這個答案完美..你不會相信人們建議在SQL中做同樣的複雜查詢。 – user3838440

+0

只是好奇...當我們已經限制在1時,我們是否真的需要'DISTINCT'子句? – pahariayogi

+1

@pahariayogi DISTINCT在LIMIT之前應用。它確保在「1,2,3,3,4,5,5,6」表中返回值爲2。 –

0

嘗試'限價'關鍵字。

下面的查詢將通過使用'not in'消除前四行。 然後最後一個'限制1'將選擇第5行。

選擇從程序 *如果ProgramId不 (選擇ProgramId從程序以便通過programId限制4) 爲了通過programId限制1

編輯:

要添加CV的 '獨特' 和' OFFSET的建議,完成的查詢將看起來像...

Select StudentName From Students Where Marks in (
Select distinct Marks from Students Order By Marks desc Limit 1 offset 4) 
+0

如果屬性值是唯一的,你的答案就可以工作。我擁有的情況沒有唯一的值。對於例如......在具有屬性標記的表格學生中,許多學生可能具有相同的標記。如果詢問誰獲得了第四名,我們將不得不考慮具有相同分數的人。 – user3838440

相關問題