比较 2 个表并返回 MySQL 中的变化
Posted
技术标签:
【中文标题】比较 2 个表并返回 MySQL 中的变化【英文标题】:Compare 2 tables and return the variations in MySQL 【发布时间】:2020-04-16 06:10:55 【问题描述】:大家早上好,希望有人可以帮助我解决以下问题。
在mysql中,我需要比较不同员工填写的2张相同的表,并在记录有变化时返回,如果有变化,则必须返回“零件号”、“数量”并知道它是否属于表1 或表 2。 所以我创建了一个不存在的名为“TypeTable”的列,但它返回给我 NULL。
这是查询:
SELECT numParte
,Cantidad
,NULL AS "TypeTable"
FROM (
SELECT numParte
,SUM(Cantidad) AS Cantidad
,"TypeTable" AS "Table1"
FROM eboard.pye_hojadecarga
WHERE id_chklistemb = 'IDHDC-1-HY'
GROUP BY numParte
UNION ALL
SELECT numParte
,SUM(Cantidad) AS Cantidad
,"Table2"
FROM eboard.pye_hojaconfirmacion
WHERE id_hojadecarga = 'IDHDC-1-HY'
GROUP BY numParte
) tbl
GROUP BY numParte
,Cantidad
HAVING count(*) = 1
ORDER BY numParte;
【问题讨论】:
aunion all
不比较这两个表 - 它只是将所有行组合成一个结果。查看“完全外部连接”这里是一个参考:***.com/questions/4796872/…
union all 不比较... !!!您需要完整的外部联接才能进行比较。
【参考方案1】:
您的外部查询不正确,它指定 NULL 作为要显示的值。而是简单地显示第三列:
SELECT numParte
, Cantidad
, TypeTable
FROM (
SELECT numParte
, SUM(Cantidad) AS Cantidad
, 'Table1' AS TypeTable
FROM eboard.pye_hojadecarga
WHERE id_chklistemb = 'IDHDC-1-HY'
GROUP BY numParte
UNION ALL
SELECT numParte
, SUM(Cantidad) AS Cantidad
,'Table2' AS TypeTable
FROM eboard.pye_hojaconfirmacion
WHERE id_hojadecarga = 'IDHDC-1-HY'
GROUP BY numParte
) tbl
GROUP BY numParte
, Cantidad
HAVING count(*) = 1
ORDER BY numParte;
【讨论】:
哇,非常感谢。说真的,我脑洞大开,在 MySQL 文档中找不到答案。以上是关于比较 2 个表并返回 MySQL 中的变化的主要内容,如果未能解决你的问题,请参考以下文章