使用case时mysql查询不返回所有结果

时间:2015-01-19 04:12:41

标签: mysql sql

我正在尝试从两个表中获取数据。第一个表是子类别,第二个表是子类别图像。只有一个子类别具有图像,其余的没有图像。我进行了以下查询,以便没有图像的查询可以使用默认图像

select s.name,s.id,s.level,CASE WHEN g.photo_url IS NULL THEN 'no-image.png'  ELSE g.photo_url END AS photo_url  
from sub_category s,gallery g 
where g.main_id=s.id and g.type_id='9' and s.category_id='1' and s.level='1'

但它返回了一行(有图像的那一行),其余的子类别甚至都没有显示。我们假设显示7个子类别一个带有图像,其余部分带有默认图像那些在画廊桌上没有图像的人。

1 个答案:

答案 0 :(得分:1)

您需要使用left join

也使用显式连接语法。

select s.name,s.id,s.level,
CASE WHEN g.photo_url IS NULL THEN 'no-image.png'  
ELSE g.photo_url END 
AS photo_url  
from sub_category s
left join gallery g 
on g.main_id=s.id 
on g.type_id='9' 
where s.category_id='2' 
and s.level='1'