SQL练习30:使用子查询的方式找出属于Action分类的所有电影对应的title,description
题目链接:牛客网
题目描述
你能使用子查询的方式找出属于Action
分类的所有电影对应的title
, description
吗。
film表
字段 | 说明 |
---|---|
film_id | 电影id |
title | 电影名称 |
description | 电影描述信息 |
category表
字段 | 说明 |
---|---|
category_id | 电影分类id |
name | 电影分类名称 |
last_update | 电影分类最后更新时间 |
film_category表
字段 | 说明 |
---|---|
film_id | 电影id |
category_id | 电影分类id |
last_update | 电影id和分类id对应关系的最后更新时间 |
CREATE TABLE IF NOT EXISTS film (
film_id smallint(5) NOT NULL DEFAULT '0',
title varchar(255) NOT NULL,
description text,
PRIMARY KEY (film_id));
CREATE TABLE category (
category_id tinyint(3) NOT NULL ,
name varchar(25) NOT NULL, `last_update` timestamp,
PRIMARY KEY ( category_id ));
CREATE TABLE film_category (
film_id smallint(5) NOT NULL,
category_id tinyint(3) NOT NULL, `last_update` timestamp);
输入如:
INSERT INTO film VALUES(1,'ACADEMY DINOSAUR','A Epic Drama of a Feminist And a Mad Scientist who must Battle a Teacher in The Canadian Rockies');
INSERT INTO film VALUES(2,'ACE GOLDFINGER','A Astounding Epistle of a Database Administrator And a Explorer who must Find a Car in Ancient China');
INSERT INTO film VALUES(3,'ADAPTATION HOLES','A Astounding Reflection of a Lumberjack And a Car who must Sink a Lumberjack in A Baloon Factory');
INSERT INTO category VALUES(1,'Action','2006-02-14 20:46:27');
INSERT INTO category VALUES(2,'Animation','2006-02-14 20:46:27');
INSERT INTO category VALUES(3,'Children','2006-02-14 20:46:27');
INSERT INTO category VALUES(4,'Classics','2006-02-14 20:46:27');
INSERT INTO category VALUES(5,'Comedy','2006-02-14 20:46:27');
INSERT INTO category VALUES(6,'Documentary','2006-02-14 20:46:27');
INSERT INTO film_category VALUES(1,1,'2006-02-14 21:07:09');
INSERT INTO film_category VALUES(2,1,'2006-02-14 21:07:09');
INSERT INTO film_category VALUES(3,6,'2006-02-14 21:07:09');
输出:
title | description |
---|---|
ACADEMY DINOSAUR | A Epic Drama of a Feminist And a Mad Scientist who must Battle a Teacher in The Canadian Rockies |
ACE GOLDFINGER | A Astounding Epistle of a Database Administrator And a Explorer who must Find a Car in Ancient China |
解法
根据题中要求使用子查询的方式,先从category
表中查询category_id
,再根据category_id
在film_category
表中查询分类中电影的film_id
,最后根据film_id
在film
表中查询title
和description
。
SELECT title, description
FROM film
WHERE film_id IN (SELECT film_id
FROM film_category
WHERE category_id IN (SELECT category_id
FROM category
WHERE name = 'Action'))