我有这个查询:
SELECT a.total
, b.total
, (a.total - b.total) as dv
, a.customer_name
, a.report_date
, b.report_date
FROM topsourcesfcy a
CROSS
JOIN topsourcesfcy b
WHERE a.customer_name = b.customer_name
AND a.customer_name = 'SPECIALTY DRILLING FLUIDS LIMITED'
AND a.report_date = '2016-2-10'
AND b.report_date = '2016-2-9'
AND a.report_date! = b.report_date
但问题是有时记录可能存在于 a
中而不存在于 b
中,或者存在于 b
中而不存在于 a
,这将导致查询执行为 false,但如果它仅存在于一个或两个中,我仍然想选择它。
谢谢。
最佳答案
在这里阅读更全面的答案: Full Outer Join in MySQL
你想要的是一个完整的外连接,但是mysql不支持它。
相反,您可以使用两个外部联接(左和右)和一个并集的组合,以下内容也将删除重复内容:
SELECT *
FROM `t1`
LEFT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id`
UNION
SELECT *
FROM `t1`
RIGHT OUTER JOIN `t2` ON `t1`.`id` = `t2`.`id`
WHERE `t1`.`id` IS NULL;
关于mysql - 连接可能不存在的表/记录 sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35365308/