Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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 Server表中检索特定行?_Sql_Sql Server_Sql Server 2012 - Fatal编程技术网

如何从SQL Server表中检索特定行?

如何从SQL Server表中检索特定行?,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我想知道是否有一种方法可以从包含100行的SQL表中检索第2行和第5行 我看到了一些使用WHERE子句的解决方案,但它们都假设应用WHERE子句的列是线性的,从1开始 如果SQL Server表中没有一个值从1开始的列,是否还有其他方法可以查询特定行的SQL Server表 另外,我知道一种使用临时表的解决方案,您可以复制select语句输出并向表中添加一个线性列。我正在将T-SQL与SQL Server一起使用: ; WITH Base AS ( SELECT *, ROW_NUMBE

我想知道是否有一种方法可以从包含100行的SQL表中检索第2行和第5行

我看到了一些使用
WHERE
子句的解决方案,但它们都假设应用
WHERE
子句的列是线性的,从1开始

如果SQL Server表中没有一个值从1开始的列,是否还有其他方法可以查询特定行的SQL Server表

另外,我知道一种使用临时表的解决方案,您可以复制select语句输出并向表中添加一个线性列。我正在将T-SQL与SQL Server一起使用:

; WITH Base AS (
    SELECT *, ROW_NUMBER() OVER (ORDER BY id) RN FROM YourTable
)

SELECT *
    FROM Base WHERE RN IN (2, 5)
必须用主键或顺序替换的
id
YourTable
即您的表


它是一个CTE(公共表表达式),所以它不是一个临时表。它将与您的查询一起展开。

如果您使用的是SQL Server 2005或更高版本,则可以使用
Row\u Number()
函数。例:

;With CTE as (
    select col1, ..., row_number() over (order by yourOrderingCol) rn
    from yourTable
)
select col1,...
from cte
where rn in (2,5)
请注意,
yourOrderingCol
将决定行号的值(即
rn
)。

试试这个

SELECT * FROM (
  SELECT
    ROW_NUMBER() OVER (ORDER BY ColumnName ASC) AS rownumber
    FROM TableName
)  as temptablename
WHERE rownumber IN (2,5)

表中没有第二行或第五行


您返回的结果集中只有第二个或第五个结果,这取决于您在该查询中指定的顺序。

sql数据检索的条件是什么您使用的是哪种sql?MySQL、MSSQL、Postgres等?您正在使用哪些RDBMS?Rownum功能现在在大多数系统中都可用,但根据系统的不同定义仍有很大差异。@UpvoteMarkAnswer-我的条件?我必须返回第5、6或7点的行。在关系表中没有“第二”行。您需要有某种“排序标准”才能识别“第二”行。对不起,我想您不明白,我没有从1开始的线性增量列。@AntunTun我告诉过您需要线性增量列吗?:-)如果您有
top
子句,您需要额外的orderby,否则无法保证您将得到第2行和第5行。@podyluska您可能是对的。。。虽然我总是按照
ROW\u NUMBER()
对行进行排序,但如果我只使用它的话,这可能是一种副作用,并不是什么确定的事情。我知道,我在想非线性主键列的第二位