我有这 3 个表: 1.电影
movie_id title
1 Toy Story (1995)
2 Jumanji (1995)
3 Grumpier Old Men (1995)
2.流派
genre_id genre
1 Action
2 Adventure
3 Animation
3.movies_genre
m_g_id movie_id genre_id
1 1 2
2 2 1
3 2 2
4 3 1
5 3 2
6 3 3
我正在寻找这个:如果 movie_genre 中存在特定类型的电影,则 value=1,否则 value=1
movie_id genre value
1 Action 0
1 Adventure 1
1 Animation 0
2 Action 1
2 Adventure 1
2 Animation 0
3 Action 1
3 Adventure 1
3 Animation 0
为了将电影的每个元素与性别的所有元素连接起来,我使用下面的查询,但是我不知道如何获取具体值?
SELECT movie_id,genre
FROM movies, genres
Order by movie_id
最佳答案
您需要将交叉联接
与外部联接
结合使用。然后您可以使用 case
语句来获取 value
:
select m.movie_id,
g.genre_id,
case when mg.m_g_id is null then 0 else 1 end
from movies m
cross join genres g
left join movies_genre mg on m.movie_id = mg.movie_id
and g.genre_id = mg.genre_id
关于mysql - 如何连接2个表,检查它们的每个元素是否存在于3个表中并将其表示为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35373414/