我遇到MySQL查询问题(版本5.6.37)。我认为它只需要重新组织查询组件,但我无法使其工作。
问题:当我的JOIN没有返回任何行时,即使数据与查询匹配,整个查询也不会返回任何行。
这是我当前的查询(其中'@'是输入):
SELECT pets.id,pet,collar,GROUP_CONCAT(petData.fleas) AS f_id
FROM titles
JOIN petWear ON pets.id = petWear
JOIN petData ON petWear.id = petData.id
WHERE pets.id = '@'
GROUP BY pets.id,pet,collar
假设这样的“宠物”表:
id | pet
1 | cat
2 | dog
3 | fish
4 | snake
5 | rabbit
和这样的JOINed“petData”表:
id | fleas
1 | 1
1 | 2
1 | 3
1 | 4
2 | 5
成功查询: 如果@ = 1,则查询返回单个结果:
id | pet | collar | f_id
1 | cat | gold | 1,2,3,4
查询失败: 如果@ = 5,则查询不返回任何结果。
我想要返回的内容(对于@ = 5)是这个单一结果(即“f_id”没有结果或NULL):
id | pet | collar | f_id
5 | rabbit | red |
请注意,我已将petWear表格包含在“领子”列表中,只是为了说明“正常”联接也需要成为图片的一部分。
答案 0 :(得分:0)
尝试以下代码。基本上,如果GROUP_CONCAT没有返回值,它将打印no_fleas
SELECT pets.id,pet,collar,IFNULL((GROUP_CONCAT(petData.fleas), 'no_fleas') AS f_id
FROM titles
JOIN petWear ON pets.id = petWear
JOIN petData ON petWear.id = petData.id
WHERE pets.id = '@'
GROUP BY pets.id,pet,collar