我有这个问题:
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_value
。 sort_by
列排列的数据可以按升序或降序排列。
我的问题是我应该在哪里添加条件column_name = column_value
以及我的查询中的ORDER ASC/DESC
?
如果我的问题不清楚,请询问。感谢。
答案 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,他们添加的分页功能(根据我的经验)比过去使用的行编号分页更好。