首页 > 解决方案 > Mysql Query 显示两个表中不匹配的记录,如旧记录和新记录

问题描述

我有两张两张表,一张是临时表,另一张是主表。在进行最终处理之前,用户单击刷新按钮。然后我将数据填充到临时表中,如果两个表之间有任何差异,如旧值 - 新值,则需要向用户显示。为此,我尝试了以下查询,但无法获得旧值。我越来越空

Temporay table

+------+--------------+----------------+-----+
| asn        |       ean |   belegnr |quantity|
+------+--------------+----------------+-----+
|  700000845 | 4046228201122| 30059314 |2  |
|  700000845 | 4046228138879| 30059314 |3  |
|  700000845 | 4046228138875| 30059320 |25 |
+------+--------------+----------------+--+--+

主表

+------+--------------+----------------+-----+
| asn        |       ean |   belegnr |quantity|
+------+--------------+----------------+-----+
|  700000845 | 4046228201122| 30059314 |5  |
|  700000845 | 4046228138879| 30059314 |3  |
|  700000845 | 4046228138888| 30059320 |25 |
+------+--------------+----------------+--+--+

从这两个表中,我在 ean 字段和数量字段中都有变化为此,我正在使用此查询

SELECT
t2.id,t2.ean,t2.belegnr,t2.`quantity`,t1.`quantity`  FROM
temp_table  t2
LEFT OUTER JOIN details  t1 ON
t1.asn = t2.asn
AND t1.ean = t2.ean
AND t1.belegnr =  t2.belegnr
AND t1.quantity = t2.quantity
WHERE t2.asn = 700000845
AND t2.`belegnr` in(30059314,30059320)
AND t1.id IS NULL

以下是我的预期结果

+------+--------------+----------------+-----+---------------------- 
| asn        |       ean |    oldean|       belegnr |quantity|Oldqty|
+------+--------------+----------------+-----+----------------------|
|  700000845 | 4046228201122| 4046228201122 |30059314 |2  |   5     |
|  700000845 | 4046228138875| 4046228138888 |30059320 |25  |  25    |
+------+--------------+----------------+--+--+--------+-------------+

任何帮助将不胜感激。

标签: mysqljoinleft-join

解决方案


不是答案。评论太长了。。。

请注意,如果数据集如下,那么问题将同样难以理解......

临时表

+-----+-----+-----------+-------+
| asn | ean  |   belegnr |quantity|
+-----+-----+------------+-----+
|  845 | 1122|      14 |     2  |
|  845 | 8879|      14 |     3  |
|  845 | 8875|      20 |    25 |
+-----+------+-----------+-------+

推荐阅读