0
我試圖創建誰已經超過X語言更多國產電影演員的排名保持一個子查詢的順序,這是我的架構:PostgreSQL的 - 使用IN操作符
actor(actorid, actorname)
act (actoirid, movieid, as_character)
movie (movieid, title, mvyear)
lang (movieid, lang)
這是查詢我堅持:
SELECT actorid, actorname, title, mvyear, as_character, lang
FROM actor NATURAL JOIN act NATURAL JOIN movies_slice NATURAL JOIN lang
WHERE actorid IN (
SELECT act.actorid FROM act NATURAL JOIN lang
GROUP BY (act.actorid) HAVING COUNT(DISTINCT lang.lang) > $X$
ORDER BY COUNT(DISTINCT lang.lang) DESC --<<< Want to keep this order.
)
我知道IN運算符右側子查詢的順序將被丟棄。我該如何解決這個問題?
感謝您的平視有關自然加入...是在這種情況下使用JOIN和INNER JOIN等價物嗎? –
@ MateusS.Vasconcelos。 。 。是。沒有任何'FULL'或'CROSS'修飾符,'JOIN'就是'INNER JOIN'。 –
我不喜歡編輯答案,但我想警告您,您的查詢中存在一些小錯誤。像演員和行爲的模棱兩可的別名,以及使用movie_id(不存在列)來加入電影。此外,這個錯誤,查詢不正確,我得到一個錯誤:「公共列名」actorid「在左表中出現不止一次」。我不知道在哪裏解決它。 :( –