我的問題聽起來很簡單,但我還沒有找到可行的解決方案。 我需要獲得與sqlite屬性的第5個最高值的行..當然,條目是隨機的。所以它沒有排序。 我確實發現了一些sql解決方案,但顯然並不是所有的sql功能都被sqlite支持。在sqlite中獲取第n個最高值的行
在此先感謝
我的問題聽起來很簡單,但我還沒有找到可行的解決方案。 我需要獲得與sqlite屬性的第5個最高值的行..當然,條目是隨機的。所以它沒有排序。 我確實發現了一些sql解決方案,但顯然並不是所有的sql功能都被sqlite支持。在sqlite中獲取第n個最高值的行
在此先感謝
要刪除重複,請使用DISTINCT。 爲了只得到第五值,使用OFFSET子句:
SELECT DISTINCT SomeAttribute
FROM MyTable
ORDER BY 1 DESC
LIMIT 1 OFFSET 4
謝謝你...你真的救了我很多工作..這個答案完美..你不會相信人們建議在SQL中做同樣的複雜查詢。 – user3838440
只是好奇...當我們已經限制在1時,我們是否真的需要'DISTINCT'子句? – pahariayogi
@pahariayogi DISTINCT在LIMIT之前應用。它確保在「1,2,3,3,4,5,5,6」表中返回值爲2。 –
嘗試'限價'關鍵字。
下面的查詢將通過使用'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)
如果屬性值是唯一的,你的答案就可以工作。我擁有的情況沒有唯一的值。對於例如......在具有屬性標記的表格學生中,許多學生可能具有相同的標記。如果詢問誰獲得了第四名,我們將不得不考慮具有相同分數的人。 – user3838440
使用SQL不是嚴格的SQLite兼容的,但表示你要完成將是有益的代碼示例。 – cpburnz