表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