Tsql 如何选择给定行周围的n行

Tsql 如何选择给定行周围的n行,tsql,select,Tsql,Select,我试图选择一行,以及前后的5行,并在一个select语句中返回它们。我从哪里开始这么做 提前谢谢 您可以使用联合查询,类似于伪代码: SELECT TOP 6 * --include row and 5 rows before FROM table1 WHERE column1 >= @value UNION SELECT TOP 5 * FROM table1 WHERE column1 < @value 您可以使用联合查询,类似于伪代码: SELECT TOP 6 * --in

我试图选择一行,以及前后的5行,并在一个select语句中返回它们。我从哪里开始这么做

提前谢谢

您可以使用联合查询,类似于伪代码:

SELECT TOP 6 * --include row and 5 rows before
FROM table1
WHERE column1 >= @value
UNION
SELECT TOP 5 *
FROM table1
WHERE column1 < @value
您可以使用联合查询,类似于伪代码:

SELECT TOP 6 * --include row and 5 rows before
FROM table1
WHERE column1 >= @value
UNION
SELECT TOP 5 *
FROM table1
WHERE column1 < @value

您可以使用快速修复问题


将其作为子查询的结果,然后从该查询中选择所需行号的信息。

您可以使用以下命令快速解决问题

将其作为子查询的结果,然后从该查询中选择所需行号的信息。

您可以使用带有行号功能的cte:

WITH cte AS(
    SELECT t.*
    ,      ROW_NUMBER()OVER(ORDER BY OrderColumn)AS RowNum
    FROM Table t
)
SELECT cte.* FROM cte
WHERE RowNum >= @rowToSelect - 5 AND RowNum <= @rowToSelect + 5
您可以使用带有行号功能的cte:

WITH cte AS(
    SELECT t.*
    ,      ROW_NUMBER()OVER(ORDER BY OrderColumn)AS RowNum
    FROM Table t
)
SELECT cte.* FROM cte
WHERE RowNum >= @rowToSelect - 5 AND RowNum <= @rowToSelect + 5

如何为数据库行定义“before”和“after”?是否有自动递增的主键?用于sql server、oracle、sybase ase、mysql?如何为数据库行定义“before”和“after”?是否有自动递增的主键?用于sql server、oracle、sybase ase、mysql?