我完全不了解子查询完全如何通过外部查询访问它们,所以我需要一些帮助来解决这个问题。这是四个架构。
Movie(title, year, director, budget, earnings)
Actor(stagename, realname, birthyear)
ActedIn(stagename, title, year, pay)
CanWorkWith(stagename, director)
找出在电影中表现最高的演员的姓名。 从我得到的,它要求为每部电影找到收入最高的演员......但是在第二个想法中,括号可能表明它可能是谁已经支付最高,也许一对夫妇有相同的金额。不管怎么说..
我有什么
SELECT A.realname
FROM ActedIn A
WHERE A.stagename IN ( SELECT A1.title, A1.year, MAX(pay)
FROM ActedIn A1
GROUP BY title, year )
我知道在哪里A.stagename IN是完全错误的,我只是不知道如何将其链接回来。
答案 0 :(得分:2)
如果我理解的话,这应该足够了:
SELECT A.realname
FROM ActedIn A
WHERE pay = (SELECT MAX(pay) FROM ActedIn B WHERE B.stagename = A.stageman)
答案 1 :(得分:1)
子查询的概念很简单。这只是一个透视问题。编写子查询时,它是第一个被处理的段。由于它在外部查询之前完全处理,因此子查询的输出应该对外部查询有意义。在上面提供的示例中,
SELECT A.realname FROM ActedIn A WHERE A.stagename IN
( SELECT A1.stagename FROM CanWorkWith A1 )
运行此查询时,首先处理CanWorkWIth的stagename并将stagename作为输出。期望A.stagename的外部查询接收此值,然后执行外部查询。
编写子查询的方式没有限制。
我希望你明白这一点。现在您已了解子查询的工作原理,我建议您自己解决问题并在此处询问新的SQL。祝好运。