SQL="SELECT TOP 40 user.等级,user.登陆用户名,user.头像,user.QQ号码,留言.排序,留言.交易地点,留言.自己物品,留言.别人物品,留言.用户名,留言.ip地址,留言.人气,留言.发布时间,留言.图片链接,留言.缩略图,留言.价格 FROM user,留言 WHERE (留言.用户名=user.登陆用户名 and 留言.排序>(SELECT MAX(留言.排序) FROM (SELECT TOP 80 留言.排序 FROM 留言 ORDER BY 留言.排序) AS T)) ORDER BY 留言.排序"上面的分页语句有错误,怎么改呢?
有两个表为“user”“留言”。其中字段user.登陆用户名,留言.用户名是对应的。这个查询是套用下面的:
SELECT TOP 每页记录数量 * 
FROM 表名 
WHERE (ID > 
          (SELECT MAX(id) 
    FROM (SELECT TOP 每页行数*页数 id  FROM 表 
          ORDER BY id) AS T) 
      ) 
ORDER BY ID 

解决方案 »

  1.   

    SELECT TOP 40 [user].等级,
    [user].登陆用户名,
    [user].头像,
    [user].QQ号码,
    留言.排序,
    留言.交易地点,
    留言.自己物品,
    留言.别人物品,
    留言.用户名,
    留言.ip地址,
    留言.人气,
    留言.发布时间,
    留言.图片链接,
    留言.缩略图,
    留言.价格 
    FROM [user],留言 
    WHERE 
    (
    留言.用户名=[user].登陆用户名 
    and 留言.排序>(
    SELECT MAX(留言.排序) 
    FROM (
    SELECT TOP 80 留言.排序 FROM 留言 ORDER BY 留言.排序
    )AS T
    )
    ) ORDER BY 留言.排序 
      

  2.   

    改了以后还是有错误哦!错误类型:
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
    [Microsoft][ODBC SQL Server Driver][SQL Server]聚合不应出现在 WHERE 子句中,除非该聚合位于 HAVING 子句或选择列表所包含的子查询中,并且要对其进行聚合的列是外部引用。
    /default.asp, 第 262 行
      

  3.   

    select top 40 * from a,b where a.id = b.id 
    and a.id not in (select top 40 id from a)
      

  4.   


    select top 40 * from tablename 
    where id not in(select top (pageindex-1)*pagesize id order by id ) order by id