SQL:如何从表中选择第1行、第3行、第11行和第N行?
如何从表中选择第1行、第3行、第11行和第n行?首先,永远不要依赖数据库中的行顺序。行没有自然的顺序。但是,您可以添加一个带有自动递增的属性unsigned int,例如,它指示行的顺序。确保每当编辑表格时,字段都会相应更新 现在可以选择第一行、第三行和第十一行SQL:如何从表中选择第1行、第3行、第11行和第N行?,sql,mysql,sqlite,select,Sql,Mysql,Sqlite,Select,如何从表中选择第1行、第3行、第11行和第n行?首先,永远不要依赖数据库中的行顺序。行没有自然的顺序。但是,您可以添加一个带有自动递增的属性unsigned int,例如,它指示行的顺序。确保每当编辑表格时,字段都会相应更新 现在可以选择第一行、第三行和第十一行 SELECT * FROM table t WHERE t.order IN (1, 3, 11) ORDER BY t.order ASC; 首先,永远不要依赖数据库中行的顺序。行没有自然的顺序。但是,您可以添加一个带有自动递增的属
SELECT * FROM table t
WHERE t.order IN (1, 3, 11)
ORDER BY t.order ASC;
首先,永远不要依赖数据库中行的顺序。行没有自然的顺序。但是,您可以添加一个带有自动递增的属性unsigned int,例如,它指示行的顺序。确保每当编辑表格时,字段都会相应更新 现在可以选择第一行、第三行和第十一行
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)
对于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)
如果为表定义的主键是基于整数的数据类型,例如MySQL和SQLite都具有自动增量,则可以使用:
SELECT t.*
FROM TABLE t
WHERE t.id IN (1,3, 11)
…其中id是自动增量列
细节很少,但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都具有自动增量,则可以使用:
SELECT t.*
FROM TABLE t
WHERE t.id IN (1,3, 11)
…其中id是自动增量列
细节很少,但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)
这样试试
Select *
From ( Select Row_Number() OVER (Order by empno) rno,
e.* From scott.emp e )
Where rno in (1, 3, 11)
这样试试
Select *
From ( Select Row_Number() OVER (Order by empno) rno,
e.* From scott.emp e )
Where rno in (1, 3, 11)
一些额外的信息会很有帮助。表是否有一个已正确设定种子的主键?如果是这样的话,这就是您需要使用的全部内容。您需要它在sqllite和mysql中工作吗?如果不是哪一个?请记住,这不是关于最佳实践的讨论,选择这种类型的原因不是为了列表。只有一个:一些额外的信息会很有帮助。表是否有一个已正确设定种子的主键?如果是这样的话,这就是您需要使用的全部内容。您需要它在sqllite和mysql中工作吗?如果不是哪一个呢?请记住,这不是在谈论最佳实践,选择这种类型的原因不是为了列表。只有一个:我还没有在实际服务器上检查过,但我了解了它背后的想法,mysql或sqlite中不支持select separate row。这个答案有两个答案+可选选项。我还没有在实际的服务器上检查,但我明白了它背后的想法,mysql或sqlite中没有选择单独的行支持。此答案有两个答案+备选选项。