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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值