lintcode-2072 · 查询年龄不大于 20 岁的教师所教的所有课程的课程名

389 阅读3分钟

描述

请编写 SQL 语句, 联合教师表(teachers)和课程表(courses),查询课程表中年龄不大于 20 岁的教师所教的所有课程的课程名(name)。
表定义:teachers(教师表)

列名类型注释
idint unsigned主键
namevarchar讲师姓名
emailvarchar讲师邮箱
ageint讲师年龄
countryvarchar讲师国籍

表定义:courses(课程表)

列名类型注释
idint unsigned主键
namevarchar课程名称
student_countint学生总数
created_atdatetime课程创建时间
teacher_idint unsigned讲师 id

**

  • 如果 teachers 中 存在 age 为 null 的时候,则跳过该数据。
  • 如果 teachers 中 age 全为 null 的时候,或者 teachers 表数据为空,则返回 null。

样例

样例一:

表内容 : teachers

idnameemailagecountry
1Eastern Hereticeastern.heretic@gmail.com20UK
2Northern Beggarnorthern.beggar@qq.com21CN
3Western Venomwestern.venom@163.com28USA
4Southern Emperorsouthern.emperor@qq.com21JP
5Linghu ChongNULL18CN

表内容:courses

idnamestudent_countcreated_atteacher_id
1Senior Algorithm8802020-6-1 09:03:124
2System Design13502020-7-18 10:03:123
3Django7802020-2-29 12:03:123
4Web3402020-4-22 13:03:124
5Big Data7002020-9-11 16:03:121
6Artificial Intelligence16602018-5-13 18:03:123
7Java P6+7802019-1-19 13:03:123
8Data Analysis5002019-7-12 13:03:121
10Object Oriented Design3002020-8-8 13:03:124
12Dynamic Programming20002018-8-18 20:03:121

在运行你的 SQL 语句之后,表应返回:

name
Big Data
Data Analysis
Dynamic Programming

样例二:

表内容 : teachers

idnameemailagecountry
1Eastern Hereticeastern.heretic@gmail.com21UK
2Northern Beggarnorthern.beggar@qq.com21CN
3Western Venomwestern.venom@163.com21USA
4Southern Emperorsouthern.emperor@qq.com21JP
5Linghu ChongNULL21CN

表内容:courses

idnamestudent_countcreated_atteacher_id
1Senior Algorithm8802020-6-1 09:03:124
2System Design13502020-7-18 10:03:123
3Django7802020-2-29 12:03:123
4Web3402020-4-22 13:03:124
5Big Data7002020-9-11 16:03:121
6Artificial Intelligence16602018-5-13 18:03:123
7Java P6+7802019-1-19 13:03:123
8Data Analysis5002019-7-12 13:03:121
10Object Oriented Design3002020-8-8 13:03:124
12Dynamic Programming20002018-8-18 20:03:121

在运行你的 SQL 语句之后,表应返回:

name

因为输入样例中不存在年龄不大于 20 岁的老师,查询到的课程名为空,所以这里只展示了标题,没有数据

题解:

解法1

使用join连接teachers和coureses

select a.name
from courses a join teachers b on a.teacher_id=b.id
where b.age<=20

解法2

SELECT c.name name
from teachers t, courses c
where t.id = c.teacher_id and t.age <= 20