。選択クエリは、友人として、ユーザーを追加したユーザーとそれはデータの小さなamoutをして正常に動作しますSQL Serverの再帰CTEとページング
declare @un varchar(50), @subdomain varchar(50)
set @un='user2';
set @subdomain ='test.domain.com';
WITH FRIENDS as
(
SELECT friend
FROM friend_blocked_list
WHERE [email protected] and [email protected] and approved=1 and is_blocked=0
UNION ALL
SELECT un as friend
FROM friend_blocked_list
WHERE [email protected] and [email protected] and approved=1 and is_blocked=0
)
select friend from FRIENDS group by FRIENDS.friend order by FRIENDS.friend asc
ユーザーが友人として追加されているユーザーを組み合わせたが、私は順番にサーバ側でページングを行うことができるようにしたいです負荷を軽減する。 :)私は
create PROCEDURE [dbo].[Paging]
@subdomain varchar(50),
@un varchar(50),
@PageNumber int,
@PageSize int
AS
BEGIN
--paging
DECLARE @FirstRow INT,@LastRow INT,@RowCount INT,@PageCount INT
--find recordcount and pages
SELECT @RowCount = COUNT(*), @PageCount = COUNT(*)/@PageSize
FROM friend_blocked_list
WHERE [email protected] AND [email protected] AND approved=1 AND is_blocked=0;
--- calculate pages
IF @RowCount % @PageSize != 0 SET @PageCount = @PageCount + 1
IF @PageNumber < 1 SET @PageNumber = 1
IF @PageNumber > @PageCount SET @PageNumber = @PageCount
SELECT
CurrentPage = @PageNumber,
TotalPages = @PageCount,
TotalRows = @RowCount
-- mora calculation
SELECT @FirstRow = (@PageNumber - 1) * @PageSize + 1,
@LastRow = (@PageNumber - 1) * @PageSize + @PageSize ;
WITH MyTopics AS
(
SELECT *, ROW_NUMBER() OVER (order by un asc) AS RowNumber
FROM friend_blocked_list
WHERE [email protected] AND [email protected] AND approved=1 AND is_blocked=0
)
SELECT *
FROM MyTopics
WHERE RowNumber BETWEEN @FirstRow AND @LastRow
ORDER BY RowNumber ASC;
end
以下の私のページングSPとそれを組み合わせるしようとしています。しかしいつものように、私は問題を抱えています。主な問題は、クエリ内にUNION ALL
です。それはROW_NUMBER() OVER
を使用して私を防ぐ。
アイデア?
右ではないようですFRIEND_BLOCKED_LISTテーブルにありますか? – nLL
は、第二に、すべてのそれがあるべき労働組合の後に選択 t.friend = @un isteadの WHERE t.un = @un それがひどく長くはありませんので、もしそれらが同一クエリが – nLL
列のリストではありません、あなたのロジックはFRIEND_BLOCKED_LISTのUNIONのためのものです。同じ質問の場合は、同じ人物(?)に対してFRIEND_BLOCKED_LIST.friendとFRIEND_BLOCKED_LIST.unが返されるように見えます。テーブルで何が起こっているのかははっきりしない。 –