Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何找到演过最多电影的演员和第三繁忙的演员_Mysql_Sql_Group By_Count_Greatest N Per Group - Fatal编程技术网

Mysql 如何找到演过最多电影的演员和第三繁忙的演员

Mysql 如何找到演过最多电影的演员和第三繁忙的演员,mysql,sql,group-by,count,greatest-n-per-group,Mysql,Sql,Group By,Count,Greatest N Per Group,有两张桌子 表1-参与者:参与者ID、名字、姓氏、最后更新 表2-电影演员:演员ID、电影ID、上次更新 我试过下面的方法来找出谁在电影中演过 select top 1 concat(ACTOR.FIRST_NAME, ACTOR.LAST_NAME) as Full_name from ACTOR left join FILM_ACTOR on ACTOR.ACTOR_ID = FILM_ACTOR.ACTOR_ID group by FILM_ACTOR.ACTOR_ID order by

有两张桌子

表1-参与者:参与者ID、名字、姓氏、最后更新

表2-电影演员:演员ID、电影ID、上次更新

我试过下面的方法来找出谁在电影中演过

select top 1 concat(ACTOR.FIRST_NAME, ACTOR.LAST_NAME) as Full_name
from ACTOR
left join FILM_ACTOR on ACTOR.ACTOR_ID = FILM_ACTOR.ACTOR_ID
group by FILM_ACTOR.ACTOR_ID
order by Full_name desc;

您可以执行以下操作:

select a.*
from actor a 
where a.actor_id = (select top (1) fm.actor_id 
                    from film_actor fm 
                    group by fm.actor_id 
                    order by count(*) desc
                   );

您可以执行以下操作:

select a.*
from actor a 
where a.actor_id = (select top (1) fm.actor_id 
                    from film_actor fm 
                    group by fm.actor_id 
                    order by count(*) desc
                   );
我试过下面的方法来找出谁在《max no》电影中扮演过角色

您的原始查询非常接近-您只需要适当的order by子句:

select top (1) concat(a.first_name, a.last_name) as full_name
from actor a
left join film_actor fa on a.actor_id = fa.actor_id
group by a.actor_id, a.first_name, a.last_name
order by count(*) desc;
如果您想要第n个最忙的参与者,那么一个选项是使用窗口函数:

select full_name
from (
    select concat(a.first_name, a.last_name) as full_name, row_number() over(order by count(*) desc) rn
    from actor a
    left join film_actor fa on a.actor_id = fa.actor_id
    group by a.actor_id, a.first_name, a.last_name
) t
where rn = 3
我试过下面的方法来找出谁在《max no》电影中扮演过角色

您的原始查询非常接近-您只需要适当的order by子句:

select top (1) concat(a.first_name, a.last_name) as full_name
from actor a
left join film_actor fa on a.actor_id = fa.actor_id
group by a.actor_id, a.first_name, a.last_name
order by count(*) desc;
如果您想要第n个最忙的参与者,那么一个选项是使用窗口函数:

select full_name
from (
    select concat(a.first_name, a.last_name) as full_name, row_number() over(order by count(*) desc) rn
    from actor a
    left join film_actor fa on a.actor_id = fa.actor_id
    group by a.actor_id, a.first_name, a.last_name
) t
where rn = 3

请参阅:请澄清您使用的是哪些RDBMS
MySQL
SQL Server
,因此,不要标记不相关的标记。SQL Server中没有varchar2这样的东西。时间戳数据类型与日期或时间没有关系。因此,这可能与SQL Server无关。是的,这似乎与Oracle有关。请参见:请澄清您使用的是哪种RDBMS
MySQL
SQL Server
,因此,不要标记不相关的标记。SQL Server中没有varchar2这样的东西。时间戳数据类型与日期或时间没有关系。所以这可能与SQL Server无关。是的,这似乎与Oracle有关