GroupByAndMax.sql
--按照user_id分组,分组获得的记录为round_num最大的记录:-- 方法一:SELECTa.activity_id,a.activity_round_id,a.round_num,a.user_idFROMjmf_activity_order AS aWHEREa.round_num = (SELECTmax(b.round_num)FROMjmf_activity_order AS bWHEREa.user_id = b.user_id)GROUP BY a.user_id-- 方法二:-- 不同的mysql版本老一点的可以不用limit,新一点的可以用limit不然不会排序,有缺陷SELECTa.activity_id,a.activity_round_id,a.round_num,a.user_idFROM(SELECT*FROMjmf_activity_order AS bORDER BYb.round_num DESCLIMIT 100000) AS aGROUP BY a.user_id-- 方法三:SELECTa.activity_id,a.activity_round_id,a.round_num,a.user_idFROMjmf_activity_order AS aWHERENOT EXISTS (SELECTb.*FROMjmf_activity_order AS bWHEREa.user_id = b.user_idAND b.round_num > a.round_num)GROUP BY a.user_id-- 方法四:SELECTa.activity_id,a.activity_round_id,a.round_num,a.user_idFROMjmf_activity_order AS aWHEREEXISTS (SELECTb.*FROMjmf_activity_order AS bWHEREa.user_id = b.user_idAND b.round_num > a.round_numHAVINGcount(*) = 0)GROUP BY a.user_id
