查询不返回结果,左连接

问题描述:

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

我的第一个表中有我所有的艺术家:

艺术家

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) 

我在做什么错了?

where条件转换left joininner join(因为不匹配行具有用于ag.id一个的NULL值失败IN)。移动第二个条件的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; 
+0

这最终返回所有的艺术家,而不仅仅是艺术家“平克·弗洛伊德”(ID 6)。 – LargeTuna

+0

@LargeTuna。 。 。你的问题没有说明你想要做什么。它实际上只是显示了一个将左连接变成内连接的查询。这似乎是这种情况下的明显问题。 –

+0

对不起,我只想返回任何有匹配流派“IN”7,17,16的艺术家。在这种情况下,它只会是艺术家ID 6谁是粉红色弗洛伊德 – LargeTuna