SQL:如何从表中选择第1行,第3行,第11行和第n行?

时间:2010-08-16 11:35:25

标签: sql mysql sqlite select

如何从表中选择第1行,第3行,第11行和第n行?

4 个答案:

答案 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)