我有这个问题:
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,但如果它只存在于一个或两个中,我仍然想要选择它。
感谢。
答案 0 :(得分:0)
在这里阅读更全面的答案: 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;