Mysql取分組后的每組第一條數據


Mysql取分組后的每組第一條數據
gruop by 分組后 進行 order by mysql會按照 先分組后排序的形式進行輸出 並不能做到每組中的第一條數據取出。

我的思路是 : 先將要查詢的數據表轉換成已經排序的臨時表 在進行 分組操作 。 因為在mysql分組是將第一個出現的數據進行展示出。

MySQL會創建臨時表的幾種情況:
1、UNION查詢;
2、用到TEMPTABLE算法或者是UNION查詢中的視圖;
3、ORDER BY和GROUP BY的子句不一樣時;
4、表連接中,ORDER BY的列不是驅動表中的;(指定了聯接條件時,滿足查詢條件的記錄行數少的表為[驅動表],未指定聯接條件時,行數少的表為[驅動表],多表聯合查詢時)
5、DISTINCT查詢並且加上ORDER BY時;
6、SQL中用到SQL_SMALL_RESULT選項時;
7、FROM中的子查詢;
8、子查詢或者semi-join時創建的表;

SQL :
select DISTINCT school,title,content,update_time FROM content gruop by school order by update_time DESC

這樣就是把每組最新時間的一條數據查詢出來了。

如果上面的不行可以試下:

select * from ( select DISTINCT school,title,content,update_time FROM content order by update_time DESC ) as a gruop by a.school

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM