a、b、c、d 四个表关联查询,当c表数据为空时,总结果也为空,要怎么改才能让有记录的列显示,没有的就为空?
代码如下:
SELECT c.SKUDM ,d.KWMC
FROM tableA a
RIGHT JOIN tableB b ON a.`SKUGUID` = b.`SKU_GUID`
RIGHT JOIN tableC c ON a.`SKUGUID` = c.`GUID`
,tableD d
WHERE b.`KW_GUID` = d.`GUID`
AND d.CK_GUID = 'c5ccaba1-76d7-4c51-828e-6aee89227aa6'
AND a.SPTM = '6927440564494'
d表的记录为空的,其他都是有数据的
------解决思路----------------------
,tableD d
WHERE b.`KW_GUID` = d.`GUID`
改成
left join tableD d on b.`KW_GUID` = d.`GUID`
------解决思路----------------------
RIGHT JOIN tableC c ON a.`SKUGUID` = c.`GUID`
将right join 改为 left join
right join 是将右表所有数据与左表对应,如左表无对应则为NULL left join 相反。
------解决思路----------------------
无论是left join还是right join都需要一个基础表,基础表是指无论其他表有没有记录,这个表的记录全部显示。
如果将A作为基础表,则是from a left join b left join c left join d这样的。
如果是将C作为基础表,则是from a right join b right join c left join d这样的。
当然,上面这段只是参考,实际上并不是这么简单的,要具体情况具体分析。