如何比较两个MySQL表并显示差异?

时间:2013-03-21 05:51:01

标签: php mysql

我们获得用于填充MySQL数据库的每日Feed。我想将新的Feed与之前的Feed进行比较,以查看更改,添加甚至删除的内容。我在MySQL和PHP工作。如何才能在MySQL中实现这一目标?我认为它应该采用以前的MySQL表,并将其与新的feed进行比较,新的feed也存储为MySQL表。但是我该怎么做才能检索那些在新MySQL表中找不到的行呢?谢谢!

2 个答案:

答案 0 :(得分:0)

这可能会对您有所帮助:

SELECT  a.*
FROM    `OLD_TABLE_NAME` a
WHERE   ROW(a.col1, a.col2, …) NOT IN
    (
    SELECT  *
    FROM    NEW_TABLE_NAME
    )
UNION ALL
SELECT  b.*
FROM    `NEW_TABLE_NAME` b
WHERE   ROW(b.col1, b.col2, …) NOT IN
    (
    SELECT  *
    FROM    OLD_TABLE_NAME
    )

享受!

答案 1 :(得分:0)

我会选择完整的外连接解决方​​案,在左侧显示“旧”值(在添加的情况下为null),在右侧显示新值(在删除时为null)。如果双方都已填充,则表示le line未更改或值已更改。

select key, o.value1, o.value2, m.value1, m.value2
from original o full outer join modifications m using(key)