写一个查询,找出出演过最多电影的演员的全名
Write a query to find the full name of the actor who has acted in the maximum number of movies
我的代码如下所示,但我没有得到想要的答案,即获取完成电影数量最多的演员的全名。
SELECT CONCAT(" ",actor.first_name,actor.last_name) AS Full_name
FROM actor INNER JOIN film_actor ON actor.actor_id = film_actor.actor_id
GROUP BY actor.actor_id
ORDER BY count(film_actor.actor_id) DESC
LIMIT 2, 1;
您的查询应该符合您的要求,但您需要修正 limit
子句。如果您想要电影最多的演员,那么您需要 limit 1
而不是 limit 2, 1
。 select
子句中的 concat()
也需要修复 - 您需要 space 名称之间,而不是 before他们。
另一种选择是使用聚合子查询进行排序,这避免了外部查询中的聚合:
select concat(a.first_name, ' ', a.last_name) as full_name
from actor a
order by (select count(*) from film_actor fa where fa.actor_id = a.actor_id) desc
limit 1
请注意,您的查询和这个查询都没有考虑到顶级关系的可能性。你的问题没有具体说明。如果这就是这里所需要的,那么策略就会有所不同——但这似乎不是你所要求的。
如果您不想使用内部查询而只使用连接,这就是答案:
SELECT concat(FIRST_NAME," ",LAST_NAME) as full_name FROM ACTOR A INNER JOIN FILM_ACTOR FA on A.ACTOR_ID=FA.ACTOR_ID GROUP BY (FA.ACTOR_ID) ORDER BY count(FA.FILM_ID) DESC LIMIT 1
我的代码如下所示,但我没有得到想要的答案,即获取完成电影数量最多的演员的全名。
SELECT CONCAT(" ",actor.first_name,actor.last_name) AS Full_name
FROM actor INNER JOIN film_actor ON actor.actor_id = film_actor.actor_id
GROUP BY actor.actor_id
ORDER BY count(film_actor.actor_id) DESC
LIMIT 2, 1;
您的查询应该符合您的要求,但您需要修正 limit
子句。如果您想要电影最多的演员,那么您需要 limit 1
而不是 limit 2, 1
。 select
子句中的 concat()
也需要修复 - 您需要 space 名称之间,而不是 before他们。
另一种选择是使用聚合子查询进行排序,这避免了外部查询中的聚合:
select concat(a.first_name, ' ', a.last_name) as full_name
from actor a
order by (select count(*) from film_actor fa where fa.actor_id = a.actor_id) desc
limit 1
请注意,您的查询和这个查询都没有考虑到顶级关系的可能性。你的问题没有具体说明。如果这就是这里所需要的,那么策略就会有所不同——但这似乎不是你所要求的。
如果您不想使用内部查询而只使用连接,这就是答案:
SELECT concat(FIRST_NAME," ",LAST_NAME) as full_name FROM ACTOR A INNER JOIN FILM_ACTOR FA on A.ACTOR_ID=FA.ACTOR_ID GROUP BY (FA.ACTOR_ID) ORDER BY count(FA.FILM_ID) DESC LIMIT 1