group by 查詢原理

m0_49100453發表於2020-09-30

在這裡插入圖片描述

select classes_id, count(name)as number from stu GROUP BY classes_id

查詢結果是
在這裡插入圖片描述
那麼臨時表在哪裡呢?
1、分析一下查詢語句,需要查詢表中的班級名稱以及每個班級對應的學生的數量。
首先,sql語句會產生第一張臨時表,找到所有的classid

select DISTINCT classes_id  from stu 

臨時表1
在這裡插入圖片描述
2、然後根據臨時表1去分別一個個查

select * from stu where classes_id = 1

在這裡插入圖片描述

select * from stu where classes_id = 2

臨時表2
在這裡插入圖片描述
3、讀取你需要得到的資訊,比如這裡需要得到

classes_id, count(name)as number

那麼,group by會拿到臨時表1、2、3、4、等等的數量來填入最終表格。

select COUNT(*) from (select * from stu where classes_id = 1)as s1

在這裡插入圖片描述

相關文章