MySQL-聚合、分組、排序及獲取部分行數據(分頁)查詢


一、聚合

聚合能夠快速得到統計數據,以下提供了5個聚合函數:

  • count(*):表示計算總行數,等同於 count(列)

  • max(列):表示求此列的最大值

  • min(列):表示求此列的最小值

  • sum(列):表示求此列的和

  • avg(列):表示求此列的平均值

例:

  • 查詢學生總數
    select count(*) from students;
  • 查詢女生最大年齡
    select max(age) from students where gender=0;
  • 查詢未刪除的學生最小編號
    select min(id) from students where isdelete=0;
  • 查詢男生的編號之和
    select sum(id) from students where gender=1;
  • 查詢男生的平均年齡
    select sum(age) from students where gender=1;

     

二、分組

按照字段分組,表示此字段相同的數據會被放到一個組中,實質是合並行,分組的目的一般是為了進行數據統計,做聚合運算

  • 語法:

    select 列1,...聚合... from 表名 group by 列1,...

例:

  • 查詢男女生總數

    select gender as 性別, count(*) as 總數 from students group by gender;

分組后的數據篩選:

  • 語法

    select 列1,...聚合... from 表名 group by 列1,...having 條件;
  • having后面的條件運算符與where的相同,但是選擇集不同,where是對from后面指定的表進行數據篩選,屬於對原始數據的篩選,having是對group by的結果進行篩選

例:

  • 查詢男生總人數
    select gender as 性別, count(*) as 總數 from students group by gender having gender=1;

     

三、排序

為了方便查看數據,可以對數據進行排序

  • 語法

    select * from 表名 order by 列1 asc|desc,列2 asc|desc,...

     

  • 將行數據按照列1進行排序,如果某些行列1的值相同時,則按照列2排序,以此類推
  • asc:從小到大排列,即升序,默認就是按照這種方式排列

  • desc:從大到小排序,即降序

例:

  • 按學號降序查詢男生信息
    select * from students where gender=1 order by id desc;

     

四、獲取部分行數據

當數據量過大時,在一頁中查看數據是一件非常麻煩的事情

  • 語法:

    select * from 表名 limit start,count;

    從start開始,獲取count條數據,start索引從0開始,如果不寫start,則默認start=0,表示從第1個數據開始,獲取count條

  • 分頁功能的實現:

    • 比如每頁有m條數據,顯示第n頁的數據
      select * from 表名 where... limit (n-1)*m, m;

      如果第n頁數據不足m條,則顯示當前頁的實際條數

 

五、總結:

  • 完整的select語句:
    select distinct *
    from 表名 where .... group by ... having ... order by ... limit star,count;
  • 實際使用中,只是語句中某些部分的組合,而不是全部

 


免責聲明!

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



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