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

Ant*_*Tun 3 sql sql-server sql-server-2012

我想知道有没有办法从SQL表中检索包含100行的第2行和第5行?

我看到了一些带有WHERE子句的解决方案,但他们都假设WHERE应用了哪个子句的列是线性的,从1开始.

是否有其他方法可以查询SQL Server表中的特定行,以防表中的表没有值为1的列?

PS - 我知道有一个临时表的解决方案,你可以复制你的select语句输出并向表中添加一个线性列.我正在使用T-SQL

Roh*_*han 7

试试这个,

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


xan*_*tos 5

使用SQL Server:

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

SELECT *
    FROM Base WHERE RN IN (2, 5)
Run Code Online (Sandbox Code Playgroud)

的id,你必须与你的主键或您的订购来代替,YourTable这是你的桌子.

它是CTE(公用表表达式),因此它不是临时表.它将与您的查询一起扩展.

  • @AntunTun我告诉过你需要一个线性增量的列吗?:-) (3认同)
  • 如果你有`top`子句,你需要一个额外的订单,或者不能保证你会得到第2行和第5行. (2认同)