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

标签 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 中而不存在于 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/

相关文章:

php - 我正在处理 SQL 查询,但没有处理完全外连接

javascript - 未定义索引 : page jqGrid

php - 如何在 UL 中对重复的表值进行分组?

mysql - SQL 查询 SELECT 表,对其他两个值相等的所有值求和

mysql - Django 搜索查询与 Annotate 比较投票和帖子年龄

php - 当sql查询没有返回值时如何将min(value)变量设置为0

php - 如何在表中选择一个值,如果不存在另一个值?

mysql - 在 SQL 查询中查找缺失的数字

php - 我应该依赖 PHP 代码中的 MySQL 错误吗?

mysql - 使用断言之类的触发器