mysql概要(四)order by ,limit ,group by和聚合函數的特點,子查詢


1.order by 默認按升序排列(asc/desc),多字段排序 order by 字段 排序方式,字段2 排序方式,..;

   在分組排序中,排序是對分組后的結果進行排序,而不是在組中進行排序。

 

select * from stu order by score desc,name asc;//優先score ,然后name排序

 

2.limit 在語句表示,截取記錄的條數。一般和order by 配合使用(大數據下Limit使用

limit[offset][N]

   offset: 偏移量   N:條數; 如limit(2,2),即從第三記錄開始取兩條記錄。當一個參數時:limit 2,即從第一條記錄開始取2條

select * from ibmng limit 10,10

3.關於分組和聚合函數的一個問題,(補充

使用聚合函數,分組時其他字段的值是從庫中取組第一次出現時對應數據,聚合函數的得到值和其他字段的值並不是原來本該對應的一條記錄。只是組合一起      

如:以班級進行分組,獲取成績最好的學生,

select name ,max(score) from stu group by bianji;//錯誤,這樣最大成績對應的學生並不是原學生。

如果你想在學校學生表中獲取班級成績最好的學生信息,如果想使用簡單分組是不行,上面已經說明,

     方法一:先使用分組查詢出班級和最大成績的結果作為新表,再和原表進行聯合查詢出所對應的學生信息。(保證有多個相同成績的存在情況)

     方法二:如果是最好成績只有一個話的特列,倒是可以先按班級和成績排序結果集再進行分組(利用了分組獲取第一次出現的規則。類似獲取商品中每類物品的最高價格的物品:

                 

4子查詢 where from exists

   where 子查詢:聚合函數可以直接用,(差點以為只能在group中使用了,但是一般不能和別的字段一起使用)

使用不同的子查詢查出欄目下最新商品(只是id最大的那個為最新)

where

from

exists:查詢出有商品的欄目:可以理解成外查詢中每條記錄,代入到內查詢中,如果內查詢有結果,就表示外查詢的當前記錄滿足條件。

 exists,有點類似in 


免責聲明!

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



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