【发布时间】:2012-04-08 14:45:53
【问题描述】:
以下是我正在使用的表:
电影(mID、片名、年份、导演)
审稿人(rID,姓名)
评级(rID、mID、星数、评级日期)
我将使用哪个语句来显示所有没有评分的电影。我是 SQL 语言的新手,不太明白如何做到这一点。据我所知,这是一个相对简单的查询。
【问题讨论】:
以下是我正在使用的表:
电影(mID、片名、年份、导演)
审稿人(rID,姓名)
评级(rID、mID、星数、评级日期)
我将使用哪个语句来显示所有没有评分的电影。我是 SQL 语言的新手,不太明白如何做到这一点。据我所知,这是一个相对简单的查询。
【问题讨论】:
SELECT * FROM Movie WHERE Movie.mid NOT IN (SELECT mID FROM Rating)
【讨论】:
有三种方法可以做到这一点。我的偏好是反连接,它是一个左连接,在连接的右侧有一个用于 IS NULL 的 where 子句测试。
SELECT *
FROM
Movie
LEFT JOIN Rating
ON moive.Mid = rating.mid
WHERE
rating.mid is null
【讨论】:
从没有 mID 的电影中选择 *(从评分中选择 mId)
【讨论】:
您可以使用 NOT EXISTS 子句。 Oracle 的一个很好的例子是http://www.dba-oracle.com/sql/t_subquery_not_in_exists.htm。语法可能因您的数据库而异
【讨论】: