Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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 如何从sql表中获取列值等于同一sql表的列值的最大计数的行_Mysql_Sql - Fatal编程技术网

Mysql 如何从sql表中获取列值等于同一sql表的列值的最大计数的行

Mysql 如何从sql表中获取列值等于同一sql表的列值的最大计数的行,mysql,sql,Mysql,Sql,我有一张角色表 其中包含三个字段 actor_id, movie_id, role 其中,actor_id和movie_id是整数,role是字符串 我们可以得到电影id和他们对应的有多少演员在那部电影中使用 select r.movie_id, count(r.actor_id) from roles r group by r.movie_id; 我想得到电影的id和它们对应的count(r.actor\u id),它们的count(r.actor\u id)值等于所有计数(r.actor

我有一张角色表 其中包含三个字段

actor_id, movie_id, role
其中,actor_id和movie_id是整数,role是字符串

我们可以得到电影id和他们对应的有多少演员在那部电影中使用

select r.movie_id, count(r.actor_id)
from roles r
group by r.movie_id;
我想得到电影的id和它们对应的count(r.actor\u id),它们的count(r.actor\u id)值等于所有计数(r.actor\u id)的最大值。 我使用max和count(r.actor\u id)使用:

但以上给出了错误
我们应该怎么做。

如果您只需要一个电影id,请使用
按顺序
和一些限制结果的方法:

select r.movie_id, count(*)
from roles r
group by r.movie_id
order by count(*) desc
fetch first 1 row only;
最后一个子句依赖于数据库。它可能是
选择顶部(1)
限制1

如果要复制,请使用
rank()


您使用的是MySQL还是MS SQL Server?哪个版本?@Asis。我删除了不一致的数据库标记。找出您正在使用的RDBMS。然后查看:并相应地更新。我使用的是MySQL 8.0.19.0,但是可以有多个电影id,其count(actor_id)值等于此值的最大值。您能告诉我这个rank()和更高的值是如何工作的吗?@Asis。
select r.movie_id, count(*)
from roles r
group by r.movie_id
order by count(*) desc
fetch first 1 row only;
select movie_id, cnt
from (select r.movie_id, count(*) as cnt,
             rank() over (order by count(*) desc) as seqnum
      from roles r
      group by r.movie_id
     ) m
where seqnum = 1;