首先,结合题干应用【join联结表】的形式来解:
思路:本题只需要通过左连接(left outer join)联结film表和film_category表;既然是求“没有分类的电影id以及名称”,那么film_category表中肯定存在未与film_id匹配的category_id,所以需要where条件语句'where category_id is null'来筛选。具体如下:
select f.film_id as '电影id', f.title as '名称' from films as f left outer join film_categorys as fc on f.film_id=fc.film_id where fc.category_id is null;
然后,不考虑使用join联结表,使用子查询(subquery),即嵌套在其他查询中的查询;(注意子查询总是从内向外处理,最常见的是使用where子句的in操作符的解法):
思路:查询出film_category表中所有的film_id,而在film表中这些film_id之外的即为所求。
具体如下:
select film_id as '电影id', title as '名称' from films where film_id not in (select film_id from film_categorys);
仅作参考,谢谢阅览!