查询不返回结果,左连接

时间:2015-10-06 16:33:50

标签: mysql

我有两个表,我正在尝试查询并使用左连接来获取结果。问题是我的查询没有返回任何记录。

我的第一张桌子上有我的所有艺术家:

艺术家

id | name
------------------------
4    Damien Rice
5    John Mayer 
6    Pink Floyd

我的第二张桌子有所有艺术家类型

ArtistGenre

id | artist_id | genre_name
------------------------
7     6         Jam
17    6         Rock
16    6         Blues

我的查询,但没有返回任何结果。

SELECT    a.*, ag.*
FROM      Artist a
LEFT JOIN ArtistGenre ag
ON        ag.artist_id=a.id
WHERE     a.id IS NOT NULL
AND       ag.id IN (7,17,16) 

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您的where条件正在将left join转换为inner join(因为NULL的不匹配行的ag.id值为IN {1}})。将第二个条件移动到on子句:

SELECT a.*, ag.*
FROM Artist a LEFT JOIN
     ArtistGenre ag
     ON ag.artist_id = a.id AND ag.id IN (7, 17, 16)
WHERE a.id IS NOT NULL;