一个表 T
name lover
a l1
a l2
a l3
b l4
c l5
c l6 按lover个数的多少返回name ,上表应该返回 a c b 即:先统计各数,再排序返回。对应的SQL为:select f.name from 
(select count(*) count,t.* from T t group by t.name) f order by f.count 但是我在hibernate下,不能生成这样格式的SQL(不可以有新的原表中不存在的列名,如上面的 count(*) count),所以无法使用。求如下格式的sql:select t.name from T t group by t.name order by count(t.lover)这个不对,应该怎么写?关键是不能产生新的列名出来

解决方案 »

  1.   

    Like this:create table T(name char(3),lover char(3))insert into T values('a','l1')
    insert into T values('a','l2')
    insert into T values('a','l3')
    insert into T values('b','l4')
    insert into T values('c','l5')
    insert into T values('c','l6')select name
    from T 
    group by name
    order by  count(*) descname 
    ---- 
    a  
    c  
    b  (所影响的行数为 3 行)
      

  2.   

    感谢大家,我也是用的这样的SQL。但是使用的是mysql4.1,不支持order by count(*)。现在换成了5.0,就可以了