如何從表中選擇第1行,第3行,第11行和第n行?SQL:如何從表中選擇第1行,第3行,第11行和第n行?
回答
如果沒有爲表中定義的一個主密鑰是基於整數數據類型 - 例如MySQL和SQLite都有auto_increment - 那麼你可以使用:
SELECT t.*
FROM TABLE t
WHERE t.id IN (1,3, 11)
...其中id
是auto_increment列。
有很少的細節去,然而MySQL和SQLite沒有分析查詢的支持,使得查詢相當複雜:
SELECT y.*
FROM (SELECT t.*,
(SELECT COUNT(*)
FROM TABLE x
WHERE x.col <= t.col) AS rank
FROM TABLE t) y
WHERE y.rank IN (1, 3, 11)
還沒有檢查實際的服務器,但我知道它背後的想法,並且在mysql或sqlite中沒有選擇單獨的行支持。 這個答案有兩個答案+替代選項。 – 2010-08-16 12:32:58
@Downvoter:很高興知道爲什麼 – 2010-08-16 17:15:06
首先,您永遠不應該依賴數據庫中行的順序。行沒有自然順序。但是,您可以添加一個屬性(例如,帶有自動增量的無符號整數),用於指示行的順序。確保無論何時編輯表格,該字段都會相應更新。
現在可以選擇第一,第三和第十一行
SELECT * FROM table t
WHERE t.order IN (1, 3, 11)
ORDER BY t.order ASC;
對於MySQL
SET @rows_count = NULL;
select col_list,rn from
(
select col_list, @rows_count := IFNULL(@rows_count, 0) + 1 as rn
from table_name
order by col_list
limit 11) top_n
WHERE rn IN (1,3,11)
如此花哨和複雜:P – 2010-08-16 12:31:15
SELECT * FROM(SELECT ROW_NUMBER()OVER(由EMPNO順序)RNO ,e。*來自scott.emp e)其中rno在(1,3,11)
- 1. 用SQL選擇第n行
- 2. VIM如何選擇/複製第n行從第x行到第y行
- 3. R:第(n + 1)行第n行第m + 1列與第(n + 1)行第m列之間的日期差
- 4. 從數據框中選擇第i行和第i + 1行
- 5. 如何在sql中像第3,6,9等行選擇第3行的多行表格
- 6. 如何選擇第3,第4,第7,第8和第11李?
- 7. oracle sql - 比較第1行和第2行,在第3行顯示結果?
- 8. 如何從文檔中間提取第1行到第3行?
- 9. SQL Server - 獲取前n行中的第1,第2和第3最大值
- 10. 如何從awk中的第(n + 3)行減去第n個?
- 11. 如何在SQL Server中選擇第三行或第四行
- 12. 80行數據,第一行選擇1-20行,第二行選擇21-30行
- 13. 如何在CockroachDB中選擇第n行?
- 14. 如何刪除數據幀中的第n行和第n + 1行?
- 15. 第2行和第1行的差異
- 16. 比較SQL Server中的第一行和第n行
- 17. 刪除從第N行到第N行vim的行
- 18. 按行數選擇第一個第n行
- 19. sql join - 僅從第二個表中選擇第一行
- 20. 如何爲R中的每個組選擇第2行和第3行
- 21. 爲Access中的每個人選擇第一行,第二行和第三行
- 22. SQL只選擇第一行
- 23. SQL選擇第x行
- 24. CSS選擇器第n個錶行
- 25. SQL {} setCharset AUTO_INCREMENT =第1' 行1
- 26. 在SQL表中選擇第2個和第3個最新的行
- 27. 選擇SQLite3中的每第n行
- 28. 將兩個矩陣行1劃分爲第1行...第n行到第n個劃分結果
- 29. 如何選擇第二行如果第一行爲空
- 30. 從第二行中選擇列添加到第一行sql組中的第一行的末尾編號
基於什麼排序? – 2010-08-16 11:36:21
一些其他信息會有幫助。表中是否有正確接種的主鍵?如果是這樣,你只需要使用。 – shookdiesel 2010-08-16 11:38:38
你需要它在sqllite和mysql中工作嗎?如果不是哪一個? – 2010-08-16 11:45:49