Subquery

嵌套查詢中的問題

  • May 21, 2014

我有這樣的查詢

SELECT m.title
FROM Movie AS M
WHERE
(SELECT MAX(r.stars)
FROM rating AS r
WHERE r.mID = M.mID);

我想在我的結果集中顯示 MAX(r.stars),我做錯了什麼?

我認為您在這裡不需要子查詢。這能滿足你的需要嗎?如果是這樣,它應該更有效率。

SELECT m.title, MAX(r.stars)
FROM Movie AS m
LEFT OUTER JOIN rating AS r ON r.mID = m.mID;
GROUP BY m.title

我能看到的唯一可能破壞的方法是,如果您有兩部電影具有相同的標題和不同的 mID。

將您的替換WHERELEFT OUTER JOIN,或者INNER JOIN如果您只想要帶有評分的電影。

SELECT m.title, r.MaxRating
FROM Movie AS M
LEFT OUTER JOIN
(
   SELECT mID, MAX(r.stars) AS MaxRating
   FROM rating 
   GROUP BY mID
)AS r ON r.mID = M.mID;

引用自:https://dba.stackexchange.com/questions/65544