日期:2014-05-19  浏览次数:20455 次

相同字段查询问题
说明一下表结构:
hotclick这个是点击量,pm_id是歌曲编号是主键,b_id歌手编号,singer是歌手,name是歌名
hotclick   pm_id     b_id         singer     name  
14 226 1 董杰 大城小爱
4 133 1 董杰 回家
2 134 1 董杰 无赖
3 135 1 董杰 爱海滔滔
11 94 1 董杰 春泥
4 95 1 董杰 谁说喝醉就无所谓
108 27 30 蒋舟 鹧鸪飞
101 28 30 蒋舟 如果我再遇见你
16 30 30 蒋舟 五月花园
22 76 31 樱桃 五月来看花
5 227 33 龚琳娜 孔雀飞来
0 352 33 龚琳娜 五月来


我要的数据是这样子的:
singer这一列是唯一,然后再按hotclick这个最大的一条
hotclick   pm_id         b_id         singer           name  
108 27 30 蒋舟 鹧鸪飞
22 76 31 樱桃 五月来看花
14 226 1 董杰 大城小爱

急啊。。高手帮帮忙的呀!!



------解决方案--------------------

----方法1:
select * from 表 as a where not exists(select 1 from 表 where singer=a.singer and hotclick > a.hotclick )
----方法2:
select * from 表 as a where hotclick = (select max(hotclick ) from 表 where singer = a.singer)
order by singer
----方法3:
select a.* from 表 as a inner join (select singer,max(hotclick ) as hotclick from 表 group by singer) as b
on b.singer= a.singer and a.hotclick = b.hotclick order by a.singer