我试图通过左连接模拟mySQL中的完全外连接,并将其与右连接结合起来。
SELECT * FROM auxview_candiNotes AS a
LEFT JOIN auxview_clientNotes AS b ON a.dateAdded = b.dateAdded
UNION
SELECT * FROM auxview_candiNotes AS a
RIGHT JOIN auxview_clientNotes AS b ON a.dateAdded = b.dateAdded
我这样做的原因是因为我正在加入两个表,偶尔其中一个表在特定日期没有值(因此日期未在表中列出)。但是,连接表应显示在其中一个或两个表中出现的所有日期。如果其中一个表不包含特定日期的值,则应返回NULL。
但是,auxview_clientNotes表中的某些日期未列在连接表中。
提前致谢!
答案 0 :(得分:1)
此方法并非完全外部联接,因为union
会删除重复项。当基础表具有重复项时,可以生成重复项。通常,重复删除被认为是“好”的思考,但该方法并不完全等同于full outer join
。
我更喜欢left join
方法:
select candi.*, client.*
from (select dateAdded from auxview_candiNotes union -- intentionally not `union all`
select dateAdded from auxview_clientNotes
) d left join
auxview_candiNotes candi
on candi.dateAdded = d.dateAdded left join
auxview_clientNotes client
on client.dateAdded = d.dateAdded;