原表爲:type=科目,score=成績
題目:查出每個科目成績最高的人
如果這樣使用select name,type,max(score) from order_test GROUP BY type
結果爲:
發現第三條數據和原來的數據不一致。
這時就要了解一個特性,group by分組後,則返回的是第一條記錄的基本信息的特性
就是因爲這一特性導致我們查的數據不一致,需要對原sql進行修改,排序後再查,這樣第一條數據就是我們需要的。
修改後sql:先子查詢order by,再外層用group by
select name,type,MAX(score) from (select * from order_test order by score desc) as a GROUP BY type