查询不返回结果,左连接
问题描述:
我有两个表,我试图查询并使用左连接来获取结果。问题是我的查询没有返回任何记录。查询不返回结果,左连接
我的第一个表中有我所有的艺术家:
艺术家
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 join
到inner 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;
这最终返回所有的艺术家,而不仅仅是艺术家“平克·弗洛伊德”(ID 6)。 – LargeTuna
@LargeTuna。 。 。你的问题没有说明你想要做什么。它实际上只是显示了一个将左连接变成内连接的查询。这似乎是这种情况下的明显问题。 –
对不起,我只想返回任何有匹配流派“IN”7,17,16的艺术家。在这种情况下,它只会是艺术家ID 6谁是粉红色弗洛伊德 – LargeTuna