Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:如何从表中选择第1行、第3行、第11行和第N行?_Sql_Mysql_Sqlite_Select - Fatal编程技术网

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

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; 首先,永远不要依赖数据库中行的顺序。行没有自然的顺序。但是,您可以添加一个带有自动递增的属

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

首先,永远不要依赖数据库中的行顺序。行没有自然的顺序。但是,您可以添加一个带有自动递增的属性unsigned int,例如,它指示行的顺序。确保每当编辑表格时,字段都会相应更新

现在可以选择第一行、第三行和第十一行

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中没有选择单独的行支持。此答案有两个答案+备选选项。