【发布时间】:2021-04-22 03:02:33
【问题描述】:
我正在为一个简单的 SQL 查询而苦苦挣扎。 有两种关系:movieGenre(movieID,genreName),movie(movieID,movieName)。 我需要制作一个新的电影名称表,它们共享一个共同的流派。 这是我提出的查询:
with movie_info(movieid, genreName, movieName) as (
select
movieID,
genreName,
movieName
from
movieGenre natural
join movie
)
select
m2.genreName,
m1.movieName,
m2.movieName
from
movie_info as m1,
movie_info as m2
where
m1.movieID <> m2.movieID
and m1.genreName = m2.genreName
order by
m1.genreName,
m1.movieName;
但正如您所见,元组 #1 和 #2 代表相同的事物(就像 #3 和 #6、#9 和 #10 一样),所以我只想显示其中一个。
有什么办法可以解决这个问题吗?
【问题讨论】:
-
您应该始终披露显示数据类型和约束(
CREATE TABLE语句)的实际表定义以及您的 Postgres 版本。以及查询的目标。很有可能,这可能更有效。此外,您披露的关系设计似乎没有意义,可能是由于问题过于简单。
标签: sql database postgresql