题目描述
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对应关系的最后更新时间 |
查找描述信息 (film.description)
中包含 robot
的电影对应的分类名称 (category.name)
以及电影数目 (count(film.film_id))
,而且还需要该分类包含电影总数量 (count(film_category.category_id)) >=5
部。
考察知识点
内联结,GROUP BY
, LOCATE()
。
LOCATE(‘robot’,f.description)
:在 description
字段的数据中选取包含 robot
的行。
解题思路
根据题目的要求可以先在 film_category
表中查询电影总数量大于五部的 category_id
和电影数目 COUNT(film_id)
,然后将查询的结果和三张表连接起来,添加题中相应的条件。
SELECT c.name, COUNT(fc.film_id)
FROM film AS f, film_category AS fc, category AS c,
(SELECT category_id, COUNT(film_id) AS f_count
FROM film_category
GROUP BY category_id
HAVING COUNT(film_id) >= 5) AS cc
WHERE LOCATE('robot', f.description)
AND f.film_id=fc.film_id
AND fc.category_id=c.category_id
AND cc.category_id=c.category_id
题目来源:牛客网-SQL数据库实战题
✅ 每日打卡,❤ 点个赞再走吧!!!❤
后续会继续分享 Mysql 方面的文章,如果感兴趣的话可以点个关注不迷路哦~。