我有两个表,我正在尝试查询并使用左连接来获取结果。问题是我的查询没有返回任何记录。
我的第一张桌子上有我的所有艺术家:
艺术家
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)
我做错了什么?
答案 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;