select t.train_id, t.train_no, t.err_code, t.sub_system, t.vehicle_order, t.err_status
 from tbl_error t
 where t.train_id='225' and t.train_no=13
 group by t.train_id, t.train_no, t.err_code, t.sub_system, t.vehicle_order, t.err_status
 order by t.tm_error descplsql提示“不是Group by表达式”。多谢

解决方案 »

  1.   

    没有用到哪怕一个聚集函数sum,avg,max,min,count之类
      

  2.   


    你没有用到分组的任何函数。比如count(*),或者 avg,或者num等等。
    如果你不用到的话,还不如不分组。直接select from order by呢!
      

  3.   

    order by t.tm_error desc 必须是 group by里的字符,或者是统计字段。把order by去掉。
      

  4.   

    可以这样试试:
    select t.train_id, t.train_no, t.err_code, t.sub_system, t.vehicle_order, t.err_status 
    from tbl_error t 
    where t.train_id='225' and t.train_no=13 
    group by t.train_id, t.train_no, t.err_code, t.sub_system, t.vehicle_order, t.err_status 
    order by MIN(t.tm_error) desc
      

  5.   


    这里不能这样理解, group by有distinct的功能。
      

  6.   


    直接select from order by那样就可能有重复记录了
      

  7.   

    select t.train_id, t.train_no, t.err_code, t.sub_system, t.vehicle_order, t.err_status, SUM(t.tm_error) tm_errors
    from tbl_error t 
    where t.train_id='225' and t.train_no=13 
    group by t.train_id, t.train_no, t.err_code, t.sub_system, t.vehicle_order, t.err_status 
    order by SUM(t.tm_error) desc 
      

  8.   

    ~~ 看来是基础知识太差了,劳驾推荐几本讲SQL的书吧~~