Chr*_*ris 2 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.imagetype = 'thumbnail' AND b.imagecategory = '99'
Run Code Online (Sandbox Code Playgroud)
表'a'是主表,包含有关对象的各种信息.
表'b'由每个对象的几个图像URL组成,这些URL使用'imagetype'和'imagecategory'进行过滤,仅匹配每个对象的一个图像.
只有表'b'具有匹配的id,imagetype和imagecategory时,两个表的连接才有效.如果没有,只返回表'a'中包含它们的记录,这不是我想要的.我希望表'b'返回使用IFNULL函数设置的默认值,所以我得到一个完整的结果集,即使这个表缺少链接id的值:s.
我怎样才能做到这一点?
尝试将针对列的测试移到imagesjoin子句中.如果没有匹配项,images您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'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3658 次 |
| 最近记录: |