lintcode-2058 · 删除所有年龄小于 21 岁的老师的课程

292 阅读3分钟

描述

请编写 SQL 语句,删除课程表 courses 中教课的教师年龄 age 小于 21 岁的课程 。

表定义 1: teachers (教师表)

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

表定义 2: courses (课程表)

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

**

  • 查询返回列名需要与样例输出的列名大小写一致。
  • 如果输入数据为空,则返回为空。

样例

样例 一

表内容 1: teachers (教师表)

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

表内容 2: courses (课程表)

idnamestudent_countcreated_atteacher_id
1Senior Algorithm8802020-06-014
2System Design13502020-07-183
3Django7802020-02-293
4Web3402020-04-224
5Big Data7002020-09-111
6Java P6+16602018-05-133
7Java P6+7802019-01-193
8Data Analysis5002019-07-121
10Object Oriented Design3002020-08-084
12Dynamic Programming20002018-08-181

在运行你的 SQL 语句之后,我们将执行 SELECT * FROM courses,表应返回:

idnamestudent_countcreated_atteacher_id
2System Design13502020-07-183
3Django7802020-02-293
6Java P6+16602018-05-133
7Java P6+7802019-01-193

样例 二

表内容 1: teachers (教师表)

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

表内容 2: courses (课程表)

idnamestudent_countcreated_atteacher_id
1Senior Algorithm8802020-06-014
2System Design13502020-07-183
3Django7802020-02-293
4Web3402020-04-224
5Big Data7002020-09-111
6Java P6+16602018-05-133
7Java P6+7802019-01-193
8Data Analysis5002019-07-121
10Object Oriented Design3002020-08-084
12Dynamic Programming20002018-08-181

在运行你的 SQL 语句之后,我们将执行 SELECT * FROM courses,表应返回:

idnameemailagecountry

样例二中没有符合条件的数据,所以输出中只包含表头而没有数据

题解

首先挑选出所有age小于21的老师的id,然后根据找到的id删除对应的courses中课程。

DELETE FROM courses 
WHERE teacher_id  IN (select t.id FROM teachers t WHERE t.age<21);