如何从表中选择第1行,第3行,第11行和第n行?
答案 0 :(得分:2)
首先,您永远不应该依赖数据库中行的顺序。行没有自然顺序。但是,您可以添加一个属性(例如,带有自动增量的unsigned int),它指示行的顺序。确保无论何时编辑表格,都会相应地更新字段。
您现在可以选择第一行,第三行和第十一行
SELECT * FROM table t
WHERE t.order IN (1, 3, 11)
ORDER BY t.order ASC;
答案 1 :(得分:2)
对于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)
答案 2 :(得分:1)
如果为表定义了一个基于整数的数据类型的主键 - 例如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)
答案 3 :(得分:0)
选择*从(选择Row_Number()OVER(按empno排序)rno,e。*来自scott.emp e)其中rno在(1,3,11)