【发布时间】:2019-05-16 10:46:04
【问题描述】:
我正在为即将参加的数据库考试练习,但我不知道如何进行此查询。
我按原样复制粘贴练习: 给定2张桌子
FILM(Title, Director, Year, Genre)
InCastOf(Actor, Film) Where InCastOf(film) is constrained to Film(Title)
编写查询以查找所有在同一部电影中完全出演过的演员。
到目前为止我得到的是:
SELECT InCastOf.Actor AS A1, T.Actor AS A2, InCastOf.Film FROM InCastOf
JOIN (SELECT Actor, Film FROM InCastOf) AS T ON InCastOf.Film = T.Film
WHERE InCastOf.Actor != T.Actor
这让我为每部电影返回了一对在其中扮演的演员。我可以使用 group by etc 来确定查询,但是“Exactly”这个词给我带来了一些麻烦,因为我需要确保这些演员只在同一部电影上工作,而不是其他任何事情。至少这是我从“完全”这个词中所理解的。
感谢您的帮助!
【问题讨论】:
-
如果您可以接受一些虚假点击,您可以在每个演员的电影 ID 上使用 CHECKSUM_AGG。然后找到两个具有相同校验和的actor。
-
“Fasle Hits”似乎与“Exactly”不符。
-
这点很好。
-
您可以在您的 DBMS 中使用
GROUP_CONCAT或同等概念,但具有相同的概念 -
GROUP_CONCAT 这件事让我非常接近,我现在只有一个问题,它返回 A1, A2, GROUP_CONCAT(FILM) 并且有很多类型的 actorA、actorB、[x , y, z] 和 actorB, actorA, [x, y, z] 实际上是相同的,但 DISTINCT 显然不起作用。我该如何解决?
标签: sql group-concat