select A1.Uname,A1.Evnt,A2.NickName,count(A1.Evnt) from log A1,usrtable A2 where A1.Uname =A2.name and A1.time>='2012-12-02' and A1.time<'2012-12-03' and A1.Evnt ='LOGIN' group by A1.Uname,A1.Evnt
这条语句查询的结果是这样的
我想按照count(A1.Evnt)排序,我写的语句是这样的
select A1.Uname,A1.Evnt,A2.NickName,count(A1.Evnt) from log A1,usrtable A2 where A1.Uname =A2.name and A1.time>='2012-12-02' and A1.time<'2012-12-03' and A1.Evnt ='LOGIN' group by A1.Uname,A1.Evnt  order by count(A1.Evnt)  desc
但是不出结果,一直显示在查询中,各位帮我看看有没有优化的语句,或者说我的写错了

解决方案 »

  1.   


    select 
    A1.Uname,
    A1.Evnt,
    A2.NickName,
    count(A1.Evnt) 
    from 
    log A1,usrtable A2 
    where 
    A1.Uname =A2.name 
    and A1.time>='2012-12-02'
    and A1.time<'2012-12-03' 
    and A1.Evnt ='LOGIN' 
    group by 
    A1.Uname,
    A1.Evnt  
    order by 
    4 desc
      

  2.   

    如如果一直显示在查询中,那应该不是性能问题,而是阻塞问题,在你查询这个语句的时候,在另一个窗口查查:
    select * from sys.sysprocesses where blocked<>0看看是否有数据。有就代表有阻塞。
      

  3.   

    查询的时候提示出错 
    1146 - Table 'sys.sysprocesses' doesn't exist
      

  4.   

    我就知道是这样的》。这个表从2000就开始存在,mysql不会呢,你发错区了。等别人或者去mysql问吧
      

  5.   

    select A1.Uname,A1.Evnt,A2.NickName,count(A1.Evnt) from log A1,usrtable A2 where A1.Uname =A2.name and A1.time>='2012-12-02' and A1.time<'2012-12-03' and A1.Evnt ='LOGIN' group by A1.Uname,A1.Evnt
    这个语句返回多少行?如果行不多的话,试一下如下语句。select * from (
    select A1.Uname,A1.Evnt,A2.NickName,count(A1.Evnt) as cnt from log A1,usrtable A2 where A1.Uname =A2.name and A1.time>='2012-12-02' and A1.time<'2012-12-03' and A1.Evnt ='LOGIN' group by A1.Uname,A1.Evnt 
    ) t 
    order by cnt desc
      

  6.   

    select SQL_CALC_FOUND_ROWS * from book;
    select FOUND_ROWS();两个一起运行  你就会有惊喜