帮忙看看?

[复制链接]
查看11 | 回复1 | 2009-2-13 14:38:16 | 显示全部楼层 |阅读模式
INSERT #Temp ( [UserId] )
EXEC sp_executesql @Sql
DECLARE @StartId AS INT
SET @StartId = @PageSize * ( @CurPage - 1 ) + 1 ;
SELECT @RecordsCount = COUNT(*) FROM #Temp ;
SELECT a.UserId ,TureName ,AcademicId ,ExperienceId , PostType1,PostType2,PostType3,CreateDate
FROM [User_DetailInfo] a INNER JOIN #Temp b ON
b.[id] BETWEEN @StartId AND (@StartId + @PageSize - 1) AND
a.[UserId] = b.[UserId] ORDER BY CreateDate DESC;
---我要的效果是按CreateDate排序,可是上面原代码排出的情况是,总的不按CreateDate排序,只有单独页里的数据才按CreateDate排序,如有6页数据,第一页里2005年,第6页是2009年,不过在每一页的日期却可以按新到旧排,如,12月在最上行,1月在最下行。为什么?怎么改动
能不能直接在我的代码里改,我还是不会套,谢了

回复

使用道具 举报

千问 | 2009-2-13 14:38:16 | 显示全部楼层
这段语句取的是(页数-1)*页大小+1为起始的ID,想法上是正确的,但数据库里的数据排例不一定是从小至大这种方式,有可能中间少了或排的顺序不是连续的SELECT TOP 页大小 a.UserId ,TureName ,AcademicId ,ExperienceId , PostType1,PostType2,PostType3,CreateDateFROM [User_DetailInfo] a INNER JOIN #Temp b ON a.[UserId] = b.[UserId] WHERE id(主键就行了) not in (select top 页大小*(第N页-1) id from User_DetailInfo) ORDER...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行