我有两个不同的表,其中一些记录具有相同的子信息组,但两者都具有不同的id值。以下示例中我有actors
和movies
的{{1}}表格。
我想查询这两个表格,以便获得一对plays
,movie_id
个值,这些值包含所有相同的参与者(即play_id
和first_name = given_name
对于具有相同last_name = family_name
)的每条记录。
完成此任务的适当查询是什么?
id
答案 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_name
和last_name
。
如果您想限制,例如family_name
只需添加一个where子句,在查询末尾指定所需的值,如:
movie_id