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

时间:2015-07-08 21:51:59

标签: mysql

我有两个不同的表,其中一些记录具有相同的子信息组,但两者都具有不同的id值。以下示例中我有actorsmovies的{​​{1}}表格。

我想查询这两个表格,以便获得一对playsmovie_id个值,这些值包含所有相同的参与者(即play_idfirst_name = given_name对于具有相同last_name = family_name)的每条记录。

完成此任务的适当查询是什么?

id

2 个答案:

答案 0 :(得分:2)

在子查询中使用GROUP_CONCAT将所有actor作为单个列。然后基于此加入子查询。

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

答案 1 :(得分:0)

试试这个:

tags

请注意,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_name完全匹配,同样适用于given_namelast_name

如果您想限制,例如family_name只需添加一个where子句,在查询末尾指定所需的值,如:

movie_id