gpt4 book ai didi

MySQL - 使用连接获取两个表上两组数据之间的差异?

转载 作者:搜寻专家 更新时间:2023-10-30 23:38:38 24 4
gpt4 key购买 nike

假设我有来自多个人的多组报告。我如何识别这些数据之间的变化并决定将哪些数据合并到特定数据库。

适用场景

  • 当数据存在于数据 1 而数据 2 中不存在时
  • 当数据存在于数据 2 而数据 1 中不存在时
  • 当两个表中的数据不匹配时(无论是销售额/收入)并假设有更多的列而不仅仅是可能具有不同值的收入

数据 1

Date        Sales   Revenue
2016-01-01 27 30
2016-01-03 12 10
2016-01-04 48 50

数据 2

Date        Sales   Revenue
2016-01-01 27 10
2016-01-02 31 40
2016-01-04 48 50

期望的结果

Date        Sales   T1 Revenue  T2 Revenue
2016-01-01 27 30 10
2016-01-02 31 NULL 40
2016-01-03 12 10 NULL
2016-01-04 48 50 50

我已经尝试了各种方法,包括 UNION 和 JOIN 的组合,现在似乎没有任何方法适合我。

我现在得到的最接近的是以下内容。

SELECT d1.date,
d1.sales,
d1.revenue AS T1,
d2.revenue AS T2

FROM dataset1 d1

RIGHT JOIN dataset2 d2 ON d1.date = d2.date

WHERE d1.revenue <> d2.revenue
OR (d1.revenue IS NOT NULL AND d2.revenue IS NULL)
OR (d1.revenue IS NULL AND d2.revenue IS NOT NULL)

left join/right join 之间的跳转仅取决于哪一侧有缺失数据。

搜索了网站,但没有找到适合我的解决方案 =/

最佳答案

SELECT x.*
, d1.revenue t1_revenue
, d2.revenue t2_revenue
FROM (SELECT date, sales FROM data1
UNION
SELECT date, sales FROM data2
) x
LEFT
JOIN data1 d1
ON d1.date = x.date
LEFT
JOIN data2 d2
ON d2.date = x.date
ORDER
BY date;

关于MySQL - 使用连接获取两个表上两组数据之间的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38064511/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com