我想知道有没有办法从SQL表中检索包含100行的第2行和第5行?
我看到了一些带有WHERE
子句的解决方案,但他们都假设应用WHERE
子句的列是线性的,从1开始。
如果表中没有值为1的列,是否有其他方法可以查询SQL Server表中的特定行?
P.S。 - 我知道有一个临时表的解决方案,你可以复制select语句输出并在表中添加一个线性列。我正在使用T-SQL
答案 0 :(得分:7)
试试这个,
SELECT * FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY ColumnName ASC) AS rownumber
FROM TableName
) as temptablename
WHERE rownumber IN (2,5)
答案 1 :(得分:5)
使用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(公用表表达式),因此它不是临时表。它将与您的查询一起扩展。
答案 2 :(得分:2)
如果您使用的是SQL Server 2005或更高版本,则可以使用Row_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
)。
答案 3 :(得分:2)
表格中没有第2行或第5行。
您返回的结果集中只有第2或第5个结果,由您在该查询中指定的顺序确定。