方法一:连接了3张表,其中一张是虚拟表,做出来了。下面第2种方法使用select后的子查询更容易理解,但是最后一个字段无法隐藏,实际工作中可以用,逻辑是对的,想要解题只能是方法一。
方式1:
SELECT count_all.name,count(*)
from (
SELECT c.category_id,c.name,count(*)
from film f
inner join film_category fc
on fc.film_id=f.film_id
inner join category c
on c.category_id=fc.category_id
group by c.name
HAVING count(*)>=5
) count_all
inner join film_category fc
on fc.category_id=count_all.category_id
inner join film f
on fc.film_id=f.film_id
where f.description like '%robot%';方式2:
SELECT c.name,count(*),(
SELECT count(*)
from film f
inner join film_category fc
on fc.film_id=f.film_id
inner join category c
on c.category_id=fc.category_id
group by c.name
HAVING count(*)>=5
) count_a
from film f
inner join film_category fc
on fc.film_id=f.film_id
inner join category c
on c.category_id=fc.category_id
where f.description like '%robot%'
group by c.name
HAVING count_a>=5;


京公网安备 11010502036488号