空MySQL连接连接导致查询失败

时间:2017-10-09 19:56:55

标签: mysql join

我遇到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表格包含在“领子”列表中,只是为了说明“正常”联接也需要成为图片的一部分。

1 个答案:

答案 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