我遇到了MySQL查询(版本5.6.37)的问题。我认为它只需要重新组织查询组件,但我无法使其工作。空的MySQL连接的连接导致查询失败
问题:当我的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
而一个加入 “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)这是一个结果(即没有结果,或NULL,为“F_ID”):
id | pet | collar | f_id
5 | rabbit | red |
请注意,我已经包括了宠物服表与“领”列表,只是为了说明一个“正常”的加入也需要成为图片的一部分。
你试过'LEFT OUTER JOIN petData'吗? –
另外,感谢您对您正在尝试做的事情的清晰解释! –
谢谢比尔和乔维。我每天都不使用SQL,并且指向不同的JOIN *类型*让我重新阅读了15年来我没有阅读的手册的部分内容!我只需要将'JOIN petData'改为'LEFT JOIN petData'。谢谢你的帮助。 – Parapluie