Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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 如何从表中的任何行中选择下一行_Sql_Sql Server - Fatal编程技术网

Sql 如何从表中的任何行中选择下一行

Sql 如何从表中的任何行中选择下一行,sql,sql-server,Sql,Sql Server,我有一张桌子。在该表中有一个名为CIS的列。此CIS列在每行中包含唯一的编号。我想从通过CIS编号捕获的特定行中获取50行 例如,假设我有下表 CIS MODEL --- ----- 123 1 212 2 213 3 325 4 452 3 . . . . . . 841 4 我只有一个CIS号码,没有别的了。假设我的CIS号码是212。我想从CIS编号为212的行中获得接下来的50行。我该怎么做呢?这是你想要的吗 sel

我有一张桌子。在该表中有一个名为CIS的列。此CIS列在每行中包含唯一的编号。我想从通过CIS编号捕获的特定行中获取50行

例如,假设我有下表

CIS  MODEL
---  -----
123    1
212    2
213    3
325    4
452    3
 .     .
 .     .
 .     .
841    4

我只有一个CIS号码,没有别的了。假设我的CIS号码是212。我想从CIS编号为212的行中获得接下来的50行。我该怎么做呢?

这是你想要的吗

select top 50 t.*
from table t
where cis > 212
order by cis;

它假定“下一行”是指按CIS编号排序的下一行。

这是否符合您的要求

select top 50 t.*
from table t
where cis > 212
order by cis;

它假定“下一行”是指按CIS编号排序的下一行。

根据您的问题和评论,听起来您希望根据这些行在表中插入的顺序获得下50行。正如其他人所建议的,SQL Server没有按插入顺序检索的方法。没有排序依据的
SELECT
查询不会按任何特定顺序检索数据,即使它看起来是这样。如果你对原因感兴趣,你可以在

因为您想知道下一步是什么,并且没有插入顺序的概念,所以SQL需要知道计算行的顺序,以提供所需的内容。一个选项可能是,如果该表上有一个自动递增的键列,则可以尝试按该列排序()

注:我会简单地评论戈登的回答,但我还没有足够的声誉来评论其他人的回答


希望这会有所帮助。

根据您的问题和评论,听起来您希望根据这些行在表中插入的顺序获得接下来的50行。正如其他人所建议的,SQL Server没有按插入顺序检索的方法。没有排序依据的
SELECT
查询不会按任何特定顺序检索数据,即使它看起来是这样。如果你对原因感兴趣,你可以在

因为您想知道下一步是什么,并且没有插入顺序的概念,所以SQL需要知道计算行的顺序,以提供所需的内容。一个选项可能是,如果该表上有一个自动递增的键列,则可以尝试按该列排序()

注:我会简单地评论戈登的回答,但我还没有足够的声誉来评论其他人的回答


希望这能有所帮助。

CIS列可能没有订购。它可以是随机序列,关系数据库中的表表示无序集。除非有一列指定了顺序,否则没有“下50行”的概念。根据定义,表没有顺序,所以没有“下一行”的概念。若您并没有可用作排序值的内容,那个么您就并没有办法执行您试图执行的操作。CIS列可能并没有排序。它可以是随机序列,关系数据库中的表表示无序集。除非有一列指定了顺序,否则没有“下50行”的概念。根据定义,表没有顺序,所以没有“下一行”的概念。如果您没有任何东西可以用作排序值,那么您就没有办法做您试图做的事情。