SQL学习笔记03 极客时间 SQL必知必会50讲

07丨什么是SQL函数?为什么使用SQL函数可能会带来问题?

08丨什么是SQL的聚集函数,如何利用它们汇总表的数据?

09丨子查询:子查询的种类都有哪些,如何提高子查询的性能?

我今天讲解了子查询的使用,其中讲到了 EXISTS 和 IN 子查询效率的比较,当查询字段进行了索引时,主表 A 大于从表 B,使用 IN 子查询效率更高,相反主表 A 小于从表 B 时,使用 EXISTS 子查询效率更高,同样,如果使用 NOT IN 子查询和 NOT EXISTS 子查询,在什么情况下,哪个效率更高呢?

今天的作业,水平太低,无法理解

1. SELECT
player_id,
team_id,
player_name
FROM
player a
WHERE
EXISTS ( SELECT b.player_id FROM player_score b GROUP BY b.player_id HAVING AVG( b.score ) > 20 and a.player_id = b.player_id);
2.SELECT
player_id,
team_id,
player_name
FROM
player a
WHERE
EXISTS ( SELECT b.player_id FROM player_score b WHERE a.player_id = b.player_id GROUP BY b.player_id HAVING AVG( b.score ) > 20);
3.SELECT
player_id,
team_id,
player_name
FROM
player
WHERE
player_id IN ( SELECT player_id FROM player_score GROUP BY player_id HAVING AVG( score ) > 20 );
推荐3,因为子查询只会执行一次。2比1好,因为where会先过滤数据行,然后分组,然后对分组过滤。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值