需要帮助在SQL Server中选择查询

时间:2015-10-07 02:08:29

标签: sql-server

我有这个问题:

SELECT * 
FROM
    (SELECT 
        *,
        ROW_NUMBER() OVER (ORDER BY sort_by) as row
     FROM table_name) a
WHERE 
    row > start_row AND row <= limit_row

此查询将从table_name开始选择任何内容,从start_row开始直到limit_row,结果将由sort_by列排列。

但我还需要添加条件WHERE column_name = column_valuesort_by列排列的数据可以按升序或降序排列。

我的问题是我应该在哪里添加条件column_name = column_value以及我的查询中的ORDER ASC/DESC

如果我的问题不清楚,请询问。感谢。

1 个答案:

答案 0 :(得分:1)

SELECT * 
FROM
( 
    SELECT *,
        ROW_NUMBER() OVER (ORDER BY sort_by DESC) as row
    FROM table_name
    WHERE column_name = column_value
) a
WHERE row > start_row
AND row <= limit_row
ORDER BY a.row DESC

row_number函数使用该顺序来确定用于编号目的的数据顺序;这意味着行号顺序对于了解和理解很重要,尤其是在您分页数据时。通常,在分页数据时,您需要订购,以便第1行是最新的记录,因为您希望第一页数据是最新的;这通常意味着行号的顺序将下降。

外部订单只会更改返回给您的订单,并且实际上仅作为显示顺序。因此,通常情况下,当您从最新到最旧的订单分页时,该顺序将会提升。

此外,如果您使用的是新版本的SQL Server,他们添加的分页功能(根据我的经验)比过去使用的行编号分页更好。