分页给以下这条参考参考,但以下的有点问题SELECT TOP 10 a.Co_ID, a.Co_Name, a.User_Name, b.User_Power, a.Co_Createtime, 
      a.Co_Products, a.Co_Logo, a.Province_ID
FROM Opto_Company a INNER JOIN
      Opto_User b ON a.User_Name = b.User_Name
WHERE (a.Co_Audit = 1) AND (a.Lang_Type = 0) AND (a.Co_Createtime <=
          (SELECT MIN(Co_Createtime)
         FROM (SELECT TOP 10 Co_Createtime
                 FROM Opto_Company ac INNER JOIN
                       Opto_User bc ON ac.User_Name = bc.User_Name
                 WHERE ac.Co_Infograde = 1
                 ORDER BY CONVERT(varchar(10), ac.Co_Createtime, 121) DESC, 
                       bc.User_Power DESC) AS tbltmp)) AND (a.Co_Infograde = 1)
ORDER BY CONVERT(varchar(10), a.Co_Createtime, 121) DESC, b.User_Power DESC

解决方案 »

  1.   

    SELECT  a.Co_ID, a.Co_Name, a.User_Name, b.User_Power, a.Co_Createtime, 
          a.Co_Products, a.Co_Logo, a.Province_ID
    FROM Opto_Company a INNER JOIN
          Opto_User b ON a.User_Name = b.User_Name
    WHERE (a.Co_Audit = 1) AND (a.Lang_Type = 0) AND 
    (a.Co_Infograde = 1)
    ORDER BY CONVERT(varchar(10), a.Co_Createtime, 121) DESC, b.User_Power DESC在ASP里通过pageSize=10控制每页最大显示记录数
      

  2.   

    wgsasd311(自强不息)  你的sql中pageSize和pageIndex放到哪里呀?
      

  3.   

    create procedure p
    @pageIndex int,    --以1开始
    @pageSize  int
    as
    select identity(int,1,1) as ID
           ,t.*
    into #
    from company t
    order by convert(char(10),caddtime,120) desc
             ,(select userpower from [user] where username=t.username) descdeclare @sql varchar(8000)
    set @sql='  select top '+convert(varchar,@pagesize)
             +' * from # where ID>'+convert(varchar,(@pageIndex-1)*@pagesize)
    exec(@sql)drop table #
    go
      

  4.   

    vivianfdlpw() 这个存储过程我要大量应用,用临时表会不会影响性能啊?
      

  5.   

    可以用临时表代替临时表:create procedure p
    @pageIndex int,    --以1开始
    @pageSize  int
    as
    declare @tb table
    (
      ID int identity,
      coid int,
      coname varchar(20),
      username varchar(20),
      coaudit int,
      cograde int,
      caddtime datetime
    )insert @tb(coid,coname,username,coaudit,cograde,caddtime)
    select *
    from company t
    order by convert(char(10),caddtime,120) desc
             ,(select userpower from [user] where username=t.username) descset rowcount @pageSize  --选取指定数量记录select coid,coname,username,coaudit,cograde,caddtime 
    from @tb 
    where ID>(@pageIndex-1)*@pagesizeset rowcount 0go
      

  6.   

    vivianfdlpw()  如果company表有了标识列,sql会出错。
      

  7.   

    如果你的标识列不连续,假设你的标识列是colid:declare @tb table
    (
      ID int identity,
      coid int,
      coname varchar(20),
      username varchar(20),
      coaudit int,
      cograde int,
      caddtime datetime
    )insert @tb(coid,coname,username,coaudit,cograde,caddtime)
    select convert(int,coid),coname,username,coaudit,cograde,caddtime
    from company t
    order by convert(char(10),caddtime,120) desc
             ,(select userpower from [user] where username=t.username) desc
      

  8.   

    选择出来还是有点问题
    where ID>'+convert(varchar,(@pageIndex-1)*@pagesize)
    这样的话就要求按照生成的临时表的标识列应该是从小到大有顺序生成
    可现在生成的标识列的数据是无序的,显示出来的数据不正确呀
      

  9.   

    vivianfdlpw()  我把你的sql修改成这样,可以正常使用,但我想性能可能会很大问题,有解决的方法吗?
    CREATE TABLE #tb(ID bigint IDENTITY (1, 1) NOT NULL, Co_Name [nvarchar](100),User_Name [nvarchar](50),Co_Logo [nvarchar](50),Co_Products [nvarchar](100),Province_ID int) 
    INSERT #tb  
    (Co_Name,
    User_Name,
    Co_Logo,
    Co_Products,
    Province_ID
    )
    SELECT 
    Co_Name,
    User_Name,
    Co_Logo,
    Co_Products,
    Province_ID
    FROM Opto_Company t ORDER  BY CONVERT(char(10),
    Co_Createtime,120) DESC,(SELECT User_Power FROM Opto_User WHERE
    User_Name = t.User_Name) DESCdeclare @sql varchar(8000)
    set @sql='  select top 10'
             +' * from  #tb where ID>'+convert(varchar,(@PageIndex-1)*@PageSize)exec(@sql)
    drop table #tb