MySQL查詢語句運行順序,即表之間的連接查詢

表table1內容:

 

表table2內容:

 

1,左外連接(右外同理)

SELECT t2.id,t2.name,t1.id,t1.name,t1.salary FROM table2 t2 LEFT JOIN table1 t1 ON t2.id=t1.dept_id;

語法:被連接的表名 別名 left join 連接的表名 別名 on 過濾條件


2、內連接

SELECT t2.id,t2.name,t1.id,t1.name,t1.salary FROM table2 t2 ,table1 t1 WHERE t2.id=t1.dept_id;

語法:被連接的表名 別名 ,連接的表名 別名 where 過濾條件


小結

內連接與外連接的區別

    外連接:如果連接中沒有匹配的,會將內容補爲null

    內連接:只會連接能夠匹配的,不能匹配的不會顯示

3、分組 group by

按照表2id進行分組並顯示每組中salary總數

select t2.id ,t2.name,t1.id,t1.name,sum(t1.salary) total from table2 t2 left join table1 t1 on t2.id=t1.dept_id 

group by t2.id;

運行流程:(1)運行from(2)運行group by (3)運行select


4、對分組內容過濾,having

(對分組後的內容進行過濾,過濾掉total<600的)

select t2.id ,t2.name,t1.id,t1.name,sum(t1.salary) total from table2 t2 left join table1 t1 on t2.id=t1.dept_id 

group by t2.id having sum(t1.salary)>=600;

運行流程:(1)運行from(2)運行group by (3)運行having (4)運行select


5、排序 order by 

(對分組過濾後的數據按照表2的id進行倒序排列)

select t2.id ,t2.name,t1.id,t1.name,sum(t1.salary) total from table2 t2 left join table1 t1 on t2.id=t1.dept_id 

group by t2.id having sum(t1.salary)>=600 

order by t2.id desc;

運行流程 :(1)運行from(2)運行group by (3)運行having (4)運行select(5)運行order by


6、分頁查詢 limit

(對排序後的內容進行分頁查詢)

select t2.id ,t2.name,t1.id,t1.name,sum(t1.salary) total from table2 t2 left join table1 t1 on t2.id=t1.dept_id 

group by t2.id having sum(t1.salary)>=600 

order by t2.id desc limit 1;

運行流程 :(1)運行from(2)運行group by (3)運行having (4)運行select(5)運行order by (6)運行limit


發佈了46 篇原創文章 · 獲贊 14 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章