我想从左连接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/