[英]How to use SQL ROW_NUMBER with INNER JOIN?
我已編寫此查詢來獲取特殊關鍵字的數據:
ALTER procedure [dbo].[GetAllSpecialPaperTags]
@PKeyword nvarchar(200)
as
begin
select
Papers.PID, Papers.PTitle, Papers.PaperSummary
from
PaperKeywords
left join
PaperTags on PaperKeywords.PKeyID = PaperTags.PKeyID
left join
Papers on PaperTags.PID = Papers.PID
where
PaperKeywords.PKeyword = @PKeyword
end
我想將本文用於自定義分頁: 使用SQL Server存儲過程的自定義分頁
我寫了這個查詢,但出現錯誤:
create procedure [dbo].[GetAllSpecialPaperTags]
@PageIndex INT = 1
,@PageSize INT = 10
,@RecordCount INT OUTPUT
,@PKeyword nvarchar(200)
as
BEGIN
SET NOCOUNT ON;
SELECT ROW_NUMBER() OVER
(
ORDER BY [Papers.PID] ASC
)AS RowNumber
,Papers.PID , Papers.PTitle , Papers.PaperSummary
INTO #Results
from PaperKeywords
left join PaperTags on PaperKeywords.PKeyID = PaperTags.PKeyID
left join Papers on PaperTags.PID = Papers.PID where PaperKeywords.PKeyword = @PKeyword
SELECT @RecordCount = COUNT(*)
FROM #Results
SELECT * FROM #Results
WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1
DROP TABLE #Results
end
錯誤:
消息207,級別16,狀態1,過程GetAllSpecialPaperTags,第11行
無效的列名“ Papers.PID”。
為什么?
這是您order by
表達方式order by
:
ORDER BY [Papers.PID] ASC
它正在尋找一個整體命名為“ Papers.PID”的列。 它不在 Papers
尋找PID
列。 只需放下括號:
ORDER BY Papers.PID ASC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.