select top 6 max(id) as id from (
                   select  top 1000 blog.username,blog.id,blog.addtime   from [blog] ,[user] as members where blog.username=members.username and members.lockuser='false' and blog.addtime<=getdate() and blog.IsPraise='1' order by blog.addtime desc
                 ) as table1  group by username order by max(addtime) desc--帮我翻译一下,这几个函数的执行顺序

解决方案 »

  1.   

    select top 6 max(id) as id from (
      select top 1000 blog.username,blog.id,blog.addtime 
      from [blog] ,[user] as members 
      where blog.username=members.username 
      and members.lockuser='false' 
      and blog.addtime<=getdate() 
      and blog.IsPraise='1' 
      order by blog.addtime desc
      ) as table1  
      group by username 
      order by max(addtime) desc
    帮你整理一下
      

  2.   

    SELECT TOP 6    --Step1 选取其中的6条数据,并取得最大的ID编号
            MAX(id) AS id
    FROM    ( SELECT TOP 1000             --Step2 blog.addtime 与当前时间最近的复合条件的1000条数据
                        blog.username ,
                        blog.id ,
                        blog.addtime
              FROM      [blog] ,
                        [user] AS members
              WHERE     blog.username = members.username
                        AND members.lockuser = 'false'
                        AND blog.addtime <= GETDATE()
                        AND blog.IsPraise = '1'
              ORDER BY  blog.addtime DESC
            ) AS table1
    GROUP BY username
    ORDER BY MAX(addtime) DESC
      

  3.   

    执行顺序与Step刚好相反,LZ明白的...
      

  4.   


    select top 6 id from blog ,[user] as members 
      where blog.username=members.username 
      and members.lockuser='false' 
      and blog.addtime<=getdate() 
      and blog.IsPraise='1' 
      and not exists (select 1 from blog where username = blog.username and id>blog.id)
    order by addtime desc
      

  5.   

    将临时表table按用户名进行分组,从临时表table中选出前6条数据,其中临时表table满足的条件是选出在当前系统时间前注册,IsPraise为1,并按用户注册时间进行降序排序出来的前1000条记录返回的查询值。