【笔记】SQL 5-2

1. 内联视图子查询

内联视图子查询实际上就是将查询的结果集作为一个查询表,继续进行查询操作。

查询国籍为美国(USA),且年龄最大的教师,请使用内联视图子查询实现

select*

from(select* from teachers where country='USA') teachers

where age=(select max(age)from teachers);

使用内联视图,连接 teachers 表和 courses 表,并将查询的课程名称(起别名为 course_name)、学生总数、讲师姓名(起别名为 teacher_name)信息作为查询表,并从该查询表中选出学生总数最多的信息

select courses.name as course_name,student_count,teachers.name as teacher_name

from courses

right join teachers on courses.teacher_id=teachers.id

where student_count=(select max(student_count)from courses);

2. IN 操作符的多行子查询

使用 IN 操作符进行子查询,其实是将子查询返回的集合和外层查询得到的集合进行交集运算,这个结果可以是零个值,也可以是多个值。由此,最后可以查询出与列表中任意一个值匹配的行

SELECT `column_name`
FROM `table_name`
WHERE `column_name` IN(
    SELECT `column_name`
    FROM `table_name`
    WHERE `column_name` = VALUE
);

需要查询国籍为美国(USA)的教师所开的所有课程,请使用 IN 操作符进行多行子查询。

SELECT name

FROM courses

WHERE teacher_id IN (SELECT id FROM teachers where country='USA')

需要查询年龄不大于20岁的教师所教的所有课程的课程名称,请使用 NOT IN 操作符进行多行子查询。

SELECT name

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值