Subquery
嵌套查詢中的問題
我有這樣的查詢
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。
將您的替換
WHERE
為LEFT 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;