如何从表中选择第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