私は、ニュース記事のリストをページングするために使用している次のSPを持っています。あなたが推測できるかもしれないので、@start
は(内部クエリによってソートされた)行を選択するインデックスであり、@orderby
はソートする列を示し、@orderdir
は1つの方向をソートするかどうかを示します。その他。元のクエリは、パラメータを追加する前に、 hereでした。ストアドプロシージャのパラメータとしてのDESCおよびASC
ALTER PROCEDURE [mytable].[news_editor_paginate]
@count int,
@start int,
@orderby int,
@orderdir int
AS
BEGIN
SET NOCOUNT ON;
SELECT TOP (@count) * FROM
(
SELECT ne.*,n.publishstate,
(CASE WHEN @orderdir = 1 THEN
ROW_NUMBER() OVER (
ORDER BY
CASE WHEN @orderby = 0 THEN ne.[time] END DESC,
CASE WHEN @orderby = 1 THEN ne.lastedit END DESC,
CASE WHEN @orderby = 2 THEN ne.title END ASC
)
WHEN @orderdir = 2 THEN
ROW_NUMBER() OVER (
ORDER BY
CASE WHEN @orderby = 0 THEN ne.[time] END ASC,
CASE WHEN @orderby = 1 THEN ne.lastedit END ASC,
CASE WHEN @orderby = 2 THEN ne.title END DESC
)
END
) AS num
FROM news_edits AS ne
LEFT OUTER JOIN news AS n
ON n.editid = ne.id
)
AS a
WHERE num > @start
END
今は何も実際にはうまくいかなかったが、@orderby
パラメータが動作しません。 @orderdir
パラメータに1を指定すると、そのパラメータとして2を指定した場合と全く同じ結果が得られます。
うんを、それはそれほど明白と思われますあなたはそれを書きました。ありがとう、答えとしてマークするのを待つ必要があります。 –
汗がかからない。 row_numberが出てくる前に、何回かこの物に頭を傷つけました。 – Gats