mysql - 选择表 A 中与表 B 中的一组项目相连接的行

标签 mysql sql database inner-join

基于this image (不过忘记“流派”):

我有一个 Actor 列表,需要检索包含列表中每个 Actor 的电影列表。

示例数据:

INSERT INTO actor (actor_id, name) VALUES
    (1, "Alice"), (2, "Bob");

INSERT INTO film (film_id, title) VALUES
    (1, "Star Wars"), (2, "The Matrix"), (3, "Lion King);

INSERT INTO actor_film_mapping (actor_id, film_id) VALUES
    (1, 1),
    (1, 2), (2, 2),
    (2, 3);

寻找例如包含爱丽丝和鲍勃的电影列表应该只给我《黑客帝国》

我最接近的是this query它会选择包含我的 Actor 列表中的任何的电影,而不是包含全部的电影。

在 StackOverflow 上寻找类似的答案,我得到了 this它在 MSSQL 中运行良好,但在 MySQL 中则不行。

希望我已经正确表达了这个问题。我是 StackOverflow 新手

最佳答案

你们已经很接近了。不要使用 select unique,而是使用 having 进行聚合并计算匹配数:

SELECT f.*
FROM film f INNER JOIN
     actor_film_mapping afm
     ON f.film_id = afm.film_id
WHERE afm.actor_id IN (1, 2)
GROUP BY f.film_id
HAVING COUNT(*) = 2;

关于mysql - 选择表 A 中与表 B 中的一组项目相连接的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37381672/

相关文章:

java - 如何修复 Android java 中的 "each bind variable in the query must have a matching method parameter"错误?

php - 如何在mysql中使用 ".="将mysql查询连接成单个查询

java - GWT 转义特殊字符

mysql - 显示有可用书籍的最早预订

sql - 正在寻找编译器,有什么想法吗?

mysql - 高效查询 - 当查询A表中的一组特定ID时,如何检查B表中的条件是否符合A表中选定的ID?

mysql - 在子 ID 中显示父名称..而不是在 Codeigniter 中显示子 ID

php - 使用 LIKE 搜索 PDO 数据库

mysql - 获取并非每天发生的事件的每日计数

MySQL查询特定顺序和限制