MySQL Sakila选择电影最多的演员

MySQL Sakila选择电影最多的演员,mysql,database,select,Mysql,Database,Select,我需要选择在大多数电影中出现的演员。 我正在使用sakila数据库1.0: .mwb (MySQL Workbench): https://www.sendspace.com/file/i0z82j .sql (schema): https://www.sendspace.com/file/vd3hnu .sql (data): https://www.sendspace.com/file/gbp9ri 我已经有两个问题了 它会选择每个演员n次(n=在电影中出现)。 我的问题是: 选择acto

我需要选择在大多数电影中出现的演员。 我正在使用sakila数据库1.0:

.mwb (MySQL Workbench): https://www.sendspace.com/file/i0z82j
.sql (schema): https://www.sendspace.com/file/vd3hnu
.sql (data): https://www.sendspace.com/file/gbp9ri
我已经有两个问题了

  • 它会选择每个演员n次(n=在电影中出现)。 我的问题是: 选择actor.first\u name、actor.last\u name 演员 内接电影演员 ON actor.actor\u id=电影演员.actor\u id 结果:

    +------------+-------------+
    | first_name | last_name   |
    +------------+-------------+
    | PENELOPE   |GUINESS      | //4 Films in this examle
    | PENELOPE   |GUINESS      |
    | PENELOPE   |GUINESS      |
    | PENELOPE   |GUINESS      |
    | NICK       |WAHLBERG     | //5 Films in this examle
    | NICK       |WAHLBERG     |
    | NICK       |WAHLBERG     |
    | NICK       |WAHLBERG     |
    | NICK       |WAHLBERG     |
    | ED         |CHASE        | //5 Films in this examle
    | ED         |CHASE        |
    | ED         |CHASE        |
    | ED         |CHASE        |
    | ED         |CHASE        |
    | JENNIFER   |DAVIS        | //4 Films in this examle
    | JENNIFER   |DAVIS        |
    | JENNIFER   |DAVIS        |
    | JENNIFER   |DAVIS        |
    | BETTE      |NICHOLSON    | //3 Films in this examle
    | BETTE      |NICHOLSON    |
    | BETTE      |NICHOLSON    |
    | ...        |...          | //Everyother Actor who appeared in a film
    +------------+-------------+
    
  • 它选择了每一部特定演员出演的电影。 我的问题是: 选择演员id、电影id 电影演员 其中,actor_id=1 结果:演员1出演了19部电影

    +----------+-------- +
    | actor_id | film_id |
    +----------+---------+
    | 1        | 1       |
    | 1        | 23      |
    | 1        | 25      |
    | 1        | 106     |
    | 1        | 140     |
    | 1        | 166     |
    | 1        | 277     |
    | 1        | 361     |
    | 1        | 438     |
    | 1        | 499     |
    | 1        | 506     |
    | 1        | 509     |
    | 1        | 605     |
    | 1        | 635     |
    | 1        | 749     |
    | 1        | 832     |
    | 1        | 939     |
    | 1        | 970     |
    | 1        | 980     |
    +----------+---------+
    
    但我想要的是: 出现在大多数电影中的演员:

    +------------+---------------+--------+
    | first_name | last_name     | films  |
    +------------+---------------+--------+
    | NICK       | WAHLBERG      | 5      |
    | ED         | CHASE         | 5      |
    | ...        | ...           | ...    |
    +------------+----------------+-------+
    
    非常感谢您的帮助。
    谢谢大家!

    如果无法在数据库上运行查询,我会:

    SELECT count(film_actor.actor_id), actor.first_name, actor.last_name 
    FROM actor INNER JOIN film_actor ON actor.actor_id = film_actor.actor_id
    GROUP BY film_actor.actor_id ;
    

    未经测试

    而无法在数据库上运行查询我会做:

    SELECT count(film_actor.actor_id), actor.first_name, actor.last_name 
    FROM actor INNER JOIN film_actor ON actor.actor_id = film_actor.actor_id
    GROUP BY film_actor.actor_id ;
    
    select 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
    limit 1;
    

    未经测试

    See@草莓我已经编辑了这篇文章,但我不能给你更多(更少),因为我根本无法删除这个数据库的一部分。我添加了文件,你可以用它重建整个数据库。请看@草莓我已经编辑了这篇文章,但我不能给你更多(更少),因为我根本无法删除这个数据库的一部分。我添加了可以重建整个数据库的文件。perfectley运行良好,正是我想要的。perfectley运行良好,正是我想要的。@MichaelWayne这是一个答案,而不是一个问题。但它缺乏对它实际作用的简要描述。@MichaelWayne这是一个答案,而不是一个问题。但它缺乏对其实际功能的简要描述。
    select 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
    limit 1;