Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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 查找具有其他表中所有值的所有ID_Mysql - Fatal编程技术网

Mysql 查找具有其他表中所有值的所有ID

Mysql 查找具有其他表中所有值的所有ID,mysql,Mysql,在三个表格中: Actors: +------------------+ | id_a | actor_name| +------------------+ | 1 | AAA | | 2 | Bbb | | 3 | Ccc | | 4 | Ddd | | 5 | Eee | +------------------+ Movies: +----------------+ | id_m | mov_name

在三个表格中:

Actors:
+------------------+
| id_a | actor_name|
+------------------+
|   1  | AAA       |
|   2  | Bbb       |
|   3  | Ccc       |
|   4  | Ddd       |
|   5  | Eee       |
+------------------+

Movies:
+----------------+
| id_m | mov_name|
+----------------+
| 1    |   LoR   |
| 2    |  Thron  |
| 3    |   ZsT   |
+----------------+

actors_in_movies:
+-------------+
| id_m | id_a |
+-------------+
| 1    |  1   |
| 1    |  3   |
| 1    |  5   |
| 2    |  1   |
| 2    |  3   |
| 3    |  2   |
| 3    |  3   |
| 3    |  4   |
| 3    |  5   |
+-------------+
是否可以编写一个查询来获取:来自查询的演员播放的所有电影

示例:选择id_m,其中1,3,4,5中的id_a应给出:

+------+
| id_m |
+------+
|  1   |
|  2   |
+------+
然而。。选择id_m,其中1,9中的id_a应为NULL

我尝试过类似的查询:,写了如下内容:

SELECT id_m, count(*), group_concat(id_a) as all_act 
FROM actors_in_movies 
WHERE
 id_m IN (SELECT id_m FROM actors_in_movies WHERE id_a = 1)
AND
 id_m IN (SELECT id_m FROM actors_in_movies WHERE id_a = 3)
AND
 id_m IN (SELECT id_m FROM actors_in_movies WHERE id_a = 5)
GROUP BY (id_m)
HAVING count(*) <= 3
它只显示一个电影id\u m:1, 如果我用“或”就差不多了, 但对我来说,重要的是让所有的电影都能让演员们, 被质疑的演员或更少,从来没有在质疑中遗漏演员的电影。 应该如何编写?

使用group by并拥有:


这是可行的,但如果我尝试在1、3、9、12、13、14中搜索id_a,我没有得到所需的结果id_m:2。若我不得不更改,但我需要包含查询中所有ID或更少ID的电影,若电影中的演员比查询中列出的多,那个么它不应该出现在结果中
SELECT id_m
FROM table
WHERE id_a IN (1, 9) 
GROUP BY id_m
HAVING COUNT(DISTINCT id_a) = 2;