Mysql左连接并得到不同的数据

标签 mysql left-join

我想从左连接sql中获取不同的记录。

SELECT sd.bill_amount, mr.payment_amount 
FROM event_mgmt_settlement_details sd 
LEFT JOIN event_mgmt_registration mr 
ON sd.order_id = mr.order_id

在这个sql中,我可以从2个具有相同order_id的表中获取所有记录,但是一些sd.order_id或mr.order_id具有彼此没有的唯一id,我如何获取这些记录? p>

最佳答案

从两个表中查找不匹配记录的一种方法是执行union all,然后使用group_by选择数据。如果表具有相同的列名,则这种方法效果很好。由于您有不同的名称,因此需要进行一些调整,也许最好创建一个标识来查看记录来自哪个表。

select 
order_id,
amount,
table_name
from
(
  select 
  order_id,
  bill_amount as amount,
  'Table1' as table_name
  from event_mgmt_settlement_details
  union all
  select 
  order_id,
  payment_amount as amount,
  'Table2' as table_name
  from event_mgmt_registration
)x
GROUP BY order_id HAVING COUNT(*) = 1;

<强> DEMO

关于Mysql左连接并得到不同的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26968526/

相关文章:

php - 更新、连接和 WHERE MySQL

mysql - 性能改进 : Left outer Join, Order By, Subquery: Index not picked by the main query

mysql - 从 WaveMaker Online 连接到 Google Cloud SQL

php - Laravel 5.1 - 按 id 和总和值从数据库组获取数据

php - 使用 JOIN 匹配第一个结果

MySQL:如何使用 LEFT JOIN 结果进行 INNER JOIN

PHP PDO::lastInsertId() 返回 0

mysql - 如何左连接 2 个字段匹配的 2 个表

sql - 这个SQL有什么问题吗?

mysql - 尝试考虑用于存储需要连接的日期范围的最佳数据库模式