如何按字段值的出现次数对记录集进行排序并按其排序

时间:2011-05-18 18:29:47

标签: php mysql database sorting group-by

我正在运行查询 select * from transactions给了我记录集

ppno ---------name---------------amnt
1309 ---------Rajasekar----------12000
1210 ---------Mani     ----------21000
1309 ---------Sank     ----------90012
1100 ---------still    ----------12232
1309 ---------Jack     ----------23344

我想根据相同ppno的出现次数对结果集进行分组,并根据出现次数对其进行排序。例如,我想要这样的东西。

ppno ---------name---------------amnt
1309 ---------Rajasekar----------12000
1309 ---------Sank     ----------90012
1309 ---------Jack     ----------23344
1210 ---------Mani     ----------21000    
1100 ---------still    ----------12232

2 个答案:

答案 0 :(得分:1)

SELECT t.ppno, t.name, t.amnt
    FROM (SELECT ppno, COUNT(*) AS ppnoCount
              FROM transactions
              GROUP BY ppno) c
        INNER JOIN transactions t
            ON c.ppno = t.ppno
    ORDER BY c.ppnoCount DESC, t.ppno

答案 1 :(得分:1)

select t.*
from transactions t
order by (
    select count(1) from transactions t2 where t2.ppno = t.ppno
) desc, t.ppno desc