MySQL:查找id';在具有相同记录组的单独表中

MySQL:查找id';在具有相同记录组的单独表中,mysql,Mysql,我有两个不同的表,其中一些记录具有相同的信息子组,但都具有不同的id值。下面是一个示例,其中我有一个来自movies和plays的演员表 我想查询这两个表,以便获得一对movie\u id,play\u id值,这些值具有所有相同的参与者(即具有first\u name=given\u name和last\u name=family\u name,用于具有相同id的每条记录) 要实现这一点,合适的查询是什么 TABLE: movie_actors | movie_id | first_name

我有两个不同的表,其中一些记录具有相同的信息子组,但都具有不同的id值。下面是一个示例,其中我有一个来自
movies
plays
演员表

我想查询这两个表,以便获得一对
movie\u id
play\u id
值,这些值具有所有相同的参与者(即具有
first\u name=given\u name
last\u name=family\u name
,用于具有相同
id
的每条记录)

要实现这一点,合适的查询是什么

TABLE: movie_actors
| movie_id | first_name | last_name |
|----------+------------+-----------|
|        1 |       mary |   johnson |
|        1 |       john |     smith |
|        2 |        tom |  anderson |

TABLE: play_actors
|  play_id | given_name | family_name |
|----------+------------+-------------|
|       23 |       mary |     johnson |
|       23 |       john |       smith |
|       31 |       marc |     anthony |


DESIRED OUTPUT:
| movie_id | play_id |
|----------+---------|
|        1 |      23 |

在子查询中使用
GROUP\u CONCAT
,将所有参与者作为一列获取。然后在此基础上加入子查询

SELECT movie_id, play_id
FROM (SELECT movie_id, GROUP_CONCAT(CONCAT(first_name, '-', last_name) ORDER BY first_name, last_name) AS actors
      FROM movie_actors
      GROUP BY movie_id) AS m
JOIN (SELECT play_id, GROUP_CONCAT(CONCAT(given_name, '-', family_name) ORDER BY given_name, family_name) AS actors
      FROM play_actors
      GROUP BY play_id) AS p
ON m.actors = p.actors
试试这个:

SELECT DISTINCT `movie_id`, `play_id`
FROM `movie_actors`
INNER JOIN `play_actors`
ON STRCMP(`first_name`,`given_name`) = 0
    AND STRCMP(`last_name`,`family_name`) = 0
请注意,
first\u name
的值必须与
给定的\u name
完全匹配,同样地,
last\u name
family\u name
的值也必须完全匹配

如果要限制,例如
movie\u id
,只需在查询末尾添加一个where子句,指定所需的值,如:

WHERE `movie_id` = ** ID **

为什么所需的输出中没有包含
2,31
?对不起,我将对其进行编辑,使2和31具有不同的值。