MySQL–;基于if null和join的高级查询

MySQL–;基于if null和join的高级查询,mysql,sql,join,ifnull,Mysql,Sql,Join,Ifnull,我正在尝试根据联接表的值,通过一个查询查询多个表 SELECT a.id,a.name, IFNULL(b.imageurl, 'default image url') AS 'imageurl', IFNULL(b.imagecategory, '34') AS 'imagecategory', IFNULL(b.imagetype, 't') AS 'imagetype' FROM summary a LEFT JOIN images i ON a.id = b.id WHERE b.ima

我正在尝试根据联接表的值,通过一个查询查询多个表

SELECT a.id,a.name,
IFNULL(b.imageurl, 'default image url') AS 'imageurl',
IFNULL(b.imagecategory, '34') AS 'imagecategory',
IFNULL(b.imagetype, 't') AS 'imagetype'
FROM summary a
LEFT JOIN images i ON a.id = b.id
WHERE b.imagetype = 'thumbnail' AND b.imagecategory = '99'
表“a”是主表,包含有关对象的各种信息

表“b”由每个对象的多个图像URL组成,这些URL使用“imagetype”和“imagecategory”进行过滤,以仅匹配每个对象的一个图像

只有当表“b”具有匹配的id、imagetype和imagecategory时,两个表的联接才起作用。如果不是,则只返回表“a”中包含它们的记录,这不是我想要的。我希望表“b”返回使用IFNULL函数设置的默认值,因此即使此表缺少链接id:s的值,我也会得到完整的结果集


如何执行此操作?

尝试将针对
图像中列的测试移到join子句中。当
图像
中没有匹配项时,列中会出现
null
,这并不等于任何内容

SELECT a.id,a.name,
IFNULL(b.imageurl, 'default image url') AS 'imageurl',
IFNULL(b.imagecategory, '34') AS 'imagecategory',
IFNULL(b.imagetype, 't') AS 'imagetype'
FROM summary a
LEFT JOIN images b ON a.id = b.id AND
                      b.imagetype = 'thumbnail' AND 
                      b.imagecategory = '99'

谢谢你,这就成功了!除了在连接上添加WHERE子句外,我尝试了所有方法!