2

我们得到用于填充 MySQL 数据库的每日提要。我想将新的提要与前一个提要进行比较,看看有什么变化、添加甚至删除。我正在使用 MySQL 和 PHP。如何在 MySQL 中最好地实现这一点?我认为它应该采用以前的提要,即 MySQL 表,并将其与也存储为 MySQL 表的新提要进行比较。但是我该怎么做才能检索那些在新 MySQL 表中找不到的行呢?谢谢!

4

2 回答 2

0

我会选择一个完整的外部连接解决方​​案,在左侧显示“旧”值(添加时为 null),在右侧显示新值(删除时为 null)。如果两边都被填充,则意味着 le 行要么未更改,要么值已更改。

select key, o.value1, o.value2, m.value1, m.value2
from original o full outer join modifications m using(key)
于 2013-03-21T09:54:21.067 回答
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
    )

享受!

于 2013-03-21T06:08:42.790 回答