MySQL Sakila选择电影最多的演员
我需要选择在大多数电影中出现的演员。 我正在使用sakila数据库1.0: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
.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
我已经有两个问题了
+------------+-------------+
| 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
+------------+-------------+
+----------+-------- +
| 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;