如果JOIN表中的一行不存在,则无回显(MySQL)

时间:2017-06-30 09:45:01

标签: mysql phpmyadmin

混淆标题对吗?让我解释一下:这是代码:

SELECT tmdb_movies.movie_title
,GROUP_CONCAT(DISTINCT videos.videos_name) as videos_name
FROM tmdb_movies 
JOIN videos ON videos.videos_tmdb_id=tmdb_movies.tmdb_id
Where tmdb_movies.tmdb_id='31'
GROUP BY tmdb_movies.movie_title

现在这段代码没有回应。因为Where tmdb_movies.tmdb_id='31'表中不存在videos。但至少tmdb.movies.movie_title应该回应。

如果其中一个JOIN行中不存在行,如何使其他内容回显?

如果您不理解这个问题,请让我解释一下我的表结构:

在此代码中,有两个名为tmdb_moviesvideos的表。我正在使用一对多的关系。两个表都使用tmdb_id

相互连接

这就是我的tmdb_movies表格的样子:

tmdb_id       movie_title
1             Ironman
2             Logan
3             Boy
4             Superman

这就是我的videos表格的样子:

videos_tmdb_id       videos_name
1                    Ironman Trailer
2                    Logan Trailer #1
2                    Logan Trailer #2
3                    Boy Trailer #1
3                    Boy teaser 
4                    Superman Trailer #1
4                    Superman Teaser

我通过这样的外键连接它们: enter image description here

如果您需要更多信息,请告诉我。

1 个答案:

答案 0 :(得分:2)

JOIN更改为LEFT JOIN,如:

SELECT tmdb_movies.movie_title
,GROUP_CONCAT(DISTINCT videos.videos_name) as videos_name
FROM tmdb_movies 
LEFT JOIN videos ON videos.videos_tmdb_id=tmdb_movies.tmdb_id
Where tmdb_movies.tmdb_id='31'
GROUP BY tmdb_movies.movie_title

再试一次。

Left Join Reference