mysql - 使用 INNER JOIN、GROUP BY by 和 WHERE 进行选择

标签 mysql

我有 3 个关于电影的 MySQL 表。第一个是movie,第二个是actor,最后一个是movie_actor_mapping

CREATE TABLE `movie` (
  `movie_id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(50) DEFAULT NULL,
  `year` varchar(9) DEFAULT NULL,
  `rating` float(2,1) DEFAULT NULL,
  `runtime` varchar(6) DEFAULT NULL,
  `plot` varchar(1500) DEFAULT NULL,
  PRIMARY KEY (`movie_id`),
  UNIQUE KEY `title` (`title`)
) 


CREATE TABLE `actor` (
  `actor_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(40) DEFAULT NULL,
  PRIMARY KEY (`actor_id`),
  UNIQUE KEY `name_en` (`name`)
)

CREATE TABLE `movie_actor_mapping` (
  `movie_actor_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `movie_id` int(10) unsigned DEFAULT NULL,
  `actor_id` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`movie_actor_id`),
  UNIQUE KEY `movie_actor_id` (`movie_actor_id`)
) 

有些电影的评级为NULL,当我执行SELECT时,我必须选择所有具有评级的电影并按评级排序。我的 SELECT 看起来像:

SELECT *, group_concat(a.name separator ', ') as actors
FROM movie m INNER JOIN movie_actor_mapping ma
ON m.movie_id=ma.movie_id
INNER JOIN actor a
ON a.actor_id=ta.actor_id
GROUP BY m.movie_id;

我还写了一个 selectorder SELECT * FROM movie WHERE rating is not null ORDER BY rating DESC; 但我不这样做了解如何拆分这些查询。我知道,如果我没有 GROUP BY - 我可以在 ON 之后编写第二个查询,但如何使用 GROUP BY 做到这一点?

更新:

我从表中添加示例数据。所以,对于电影来说是:

1 | "American Horror Story" | "2011–" | 8.2 | "60 min" | "Both physical..."

来自actor表的数据:

1 | Evan Rachel Wood

来自movie_actor_mapping:

1 | 21 | 1

最佳答案

也许我不明白这个问题,因为它看起来太简单了,但是这个查询:

SELECT m.*, group_concat(a.name separator ', ') as actors
FROM movie m
INNER JOIN movie_actor_mapping ma ON m.movie_id = ma.movie_id
INNER JOIN actor a ON a.actor_id = ma.actor_id
WHERE m.rating IS NOT NULL
GROUP BY m.movie_id
ORDER BY m.rating DESC

...正在选择带有评级的电影,对 Actor 进行分组并按评级排序

关于mysql - 使用 INNER JOIN、GROUP BY by 和 WHERE 进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41001613/

相关文章:

mysql - Hibernate、c3p0 和 Mysql、spring

mysql - 如何提高此查询的性能

php - 从数据库中减去 PHP 变量

mysql - 在 MySQL 中实现多对多关系的最佳方式

java - JDBC 回滚方法的行为与预期不同

php - 给定数据库建模的 Symfony + Doctrine 问题

php - 从数据库中检索图像文件位置不显示

php - 选择更好的选项 1) 使用文件或 2) 数据直接存入数据库

php - 个人资料页面 - URL 参数

mysql - 组合框并从数据网格显示