我有两个表,我正在尝试查询并使用左连接来获取结果。问题是我的查询没有返回任何记录。
我的第一个表包含我所有的艺术家:
艺术家
id | name
------------------------
4 Damien Rice
5 John Mayer
6 Pink Floyd
我的第二个表包含所有艺术家流派
艺术家流派
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
(因为不匹配的行的值为 NULL
for ag.id
失败了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;
关于mysql - 查询未返回结果,左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32975113/