连接可能不存在sql的表/记录

时间:2016-02-12 14:42:05

标签: mysql

我有这个问题:

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而不是bb而不是a,这会导致查询执行到false,但如果它只存在于一个或两个中,我仍然想要选择它。 感谢。

1 个答案:

答案 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;