我想在數據集按列排序後選擇第10,第20和第50個條目。達到此目的的最佳方式是什麼?使用ORDER BY按索引選擇
回答
讓我們假定我們有如下表:
create table Test
(
value int
);
這裏是返回第一個查詢,第三和第六行:
select value
from
(
select value, (select count(*) + 1 from Test t2 where t2.value < t1.value) as OrderId
from Test t1
) tbl
where tbl.OrderId in (1,3,6)
,您可以嘗試here。如果Test表中存在重複,則上面的解決方案可以返回多於3行。
UPDATE
如果您想通過不同的列比value
從我的例子中,你應該修改條件t2.value < t1.value
進行排序。一般形式是t2.COLUMN_NAME < t1.COLUMN_NAME
。
我在這個[modified sqlfiddle](http://sqlfiddle.com/#!7/46fa8/2)中更改了你的表以包含'id,productname'。如果我沒有錯過「12」的記錄,那麼我不會指望「酒吧12」被省略。 – surfmuggle
您是否希望通過id或產品名稱列來排序數據集? –
你問我還是OP?根據我對「在按列排序後」的理解,OP的問題包括任何列的排序選項。 – surfmuggle
最簡單,最有效的方法是隻使用LIMIT/OFFSET:
SELECT * FROM MyTable ORDER BY whatever LIMIT 1 OFFSET 9
UNION ALL
SELECT * FROM MyTable ORDER BY whatever LIMIT 1 OFFSET 19
UNION ALL
SELECT * FROM MyTable ORDER BY whatever LIMIT 1 OFFSET 49
- 1. MySQL按索引選擇
- 2. 使用jquery選擇索引
- 3. 使用索引GROUP BY
- 4. VBA listbox按索引選擇工作表
- 5. 角度下拉,按索引選擇
- 6. SQLite - 在GROUP BY中選擇沒有索引的列
- 7. 使用索引按字符串前綴進行選擇
- 8. 使用對象不按索引選擇行
- 9. 使用selenium按索引號選擇列表值
- 10. 使用索引選擇XML元素
- 11. 使用索引在Selenium中選擇popwindow
- 12. 使用Javascript選擇單詞的索引
- 13. LINQ的使用選擇和索引
- 14. PyQt5選擇索引
- 15. Netbeans:jList索引選擇
- 16. Textarea選擇索引
- 17. ListView選擇索引
- 18. MySQL的選擇GROUP BY和順序按
- 19. 通過使用where索引從索引HDFStore中選擇行
- 20. 在索引列上使用ORDER BY
- 21. 的MySQL不使用索引的ORDER BY
- 22. 選擇... GROUP BY
- 23. SQL - 選擇BY
- 24. 使用選擇的列表框選擇TabControl上的Tab索引
- 25. GROUP BY DataTable中選擇使用C#
- 26. SQL使用GROUP BY選擇最新行
- 27. 如何在選擇中使用Group By?
- 28. 在DataTable上選擇索引?
- 29. 選擇插入索引?
- 30. 索引與GROUP BY,ORDER BY,和GROUP_CONCAT
什麼DB引擎你用? –
暫時與SQLite一起去。 – Jacob