数据库表 test 字段id,name,fen,type,目的是按type分组,查询每组最大的fen值。
方法一、select b.id,b.type,b.name,b.fen from
(select type,max(fen) from test group by type ) a,/*利用group by 命令按照type分组查找每组最大的fen列值,查询后所得到的数据定义为表a*/
test b /*将原表test定义为表b*/
where b.type = a.type and b.fen = a.fen /*根据表a取得的数据列再到b表中查询对应的数据行得到最终目的*/
解释:这一方法主要使用了sql多表查询,表的别名思想
方法二:
select id,fen,name from test where fen in(select type,max(fen) from test group by type)
解释:这一方法比较直接,直接根据in引入查询子句
总之,个人感觉第一种方法比较实用,根据两个表相互查询,控制起来比较直观也方便操作;第二种方法很是直接,但是有一点问题,我在实际应用中用top 5控制,分类中type只有4项,在显示的时候有一个分类是重复的。重复之后要取唯一项很是麻烦,所以我直接换用了第一种方法。
实际应用中的一点小心得,有不对的请指教,也欢迎大家来一起讨论,寻找更优的解决方法。
参考资料:http://www.qdxkj.com/shownew.aspx?wzid=52