[MySQL]子查询与合并查询

本文探讨了MySQL中的子查询和合并查询。子查询利用一层查询结果作为下一层查询的条件,虽然可读性较差且效率较低,但通过in和exists关键字可以实现多条记录的查询。合并查询则通过union和union all关键字实现查询结果的合并,其中union会去除重复行,而union all保留所有记录。
摘要由CSDN通过智能技术生成

子查询

子查询类似于套娃问题,就是用上一层查询的结果作为下一层查询的条件,进行最终的查询,有时候可能会套上很多层,难度不大,但是不太好想,在实际开发中可读性不高,效率比较低,所以尽量不使用子查询为好。

Q:如何查询“不想毕业”同学的同班同学?

  1. 先查询出“不想毕业”同学的班级号class_id
  2. 再查询哪些同学的class_id与它相同。
    在这里插入图片描述
    这是两个简单的查询语句,那么我们把它结合起来就是子查询。

    先执行第二行的查询语句,将这个查询结果,作为外层查询的条件。子查询只返回一条记录,所以最外层查询使用=比较即可。

那么问题来了,如果我想查询的记录不止一条呢

in关键字

Q:如何查询“语文”或“英文”课程的成绩信息?

  1. 先查询出“语文”或“英语”的课程号course_id;
  2. 再根据course_id查询到对应的成绩,此时的成绩就不仅仅是一条了。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值