0
私はXの言語よりも多くで映画を作ってきた俳優のランキングを作成しようとしているのUSINGサブクエリの順序を保持し、これが私のスキーマです:PostgreSQLは演算子
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'です。 –
回答を編集するのは好きではありませんが、質問に少し間違いがあることを警告したいと思います。 ActorとActのあいまいなエイリアス、movie_id(存在しない列)を使って映画に参加する。さらに、この間違いは、クエリが正しくない、私はエラーがある: "共通の列名" actorid "は、複数回、左のテーブルに表示されます"。私はそれをどこで修正するか分からない。 :( –