SQL练习29:使用join查询方式找出没有分类的电影id以及名称

SQL练习29:使用join查询方式找出没有分类的电影id以及名称

题目链接:牛客网

题目描述
使用join查询方式找出没有分类的电影id以及名称。

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 category VALUES(7,'Drama','2006-02-14 20:46:27');
INSERT INTO category VALUES(8,'Family','2006-02-14 20:46:27');
INSERT INTO category VALUES(9,'Foreign','2006-02-14 20:46:27');
INSERT INTO category VALUES(10,'Games','2006-02-14 20:46:27');
INSERT INTO category VALUES(11,'Horror','2006-02-14 20:46:27');

INSERT INTO film_category VALUES(1,6,'2006-02-14 21:07:09');
INSERT INTO film_category VALUES(2,11,'2006-02-14 21:07:09');

输出为:

电影id 名称
3 ADAPTATION HOLES

解法一
按照题目的要求使用LEFT JOIN来将film表和film_category表连接起来,选择last_update IS NULL的数据。

SELECT f.film_id, title
FROM film f LEFT JOIN film_category fc
ON f.film_id = fc.film_id
WHERE last_update IS NULL

解法二
不使用JOIN,使用子查询的方式,查询film_category表中的film_id列,再在film表中查询film_id不再子查询结果列中的数据。

SELECT film_id, title
FROM film
WHERE film_id NOT IN (SELECT film_id
                     FROM film_category)

猜你喜欢

转载自blog.csdn.net/qq_43965708/article/details/113699974