【发布时间】:2019-08-20 11:34:44
【问题描述】:
我已经创建了 2 个测试数据库来反映我的问题,即试图在旧数据库的旧表中查找缺少哪些行,而这些行存在于新数据库的新表中。
MariaDB [(none)]> SELECT * FROM DBNEW.items;
+---------+------+
| mainKey | data |
+---------+------+
| 1 | 100 |
| 2 | 99 |
| 3 | 101 |
| 4 | 100 |
+---------+------+
MariaDB [(none)]> SELECT * FROM DBOLD.items;
+---------+------+
| mainKey | data |
+---------+------+
| 1 | 100 |
| 2 | 99 |
| 4 | 100 |
+---------+------+
到目前为止,我尝试了这些查询。第 2 个给出语法错误,第 3 个不返回任何结果,即使第二个 SELECT 在括号中:
SELECT * FROM DBNEW.items
EXCEPT
SELECT * FROM DBOLD.items
SELECT * FROM DBNEW.items
INTERSECT
SELECT * FROM DBOLD.items
SELECT * FROM DBNEW.items
WHERE NOT EXISTS
SELECT * FROM DBOLD.items
尝试以下是一个有效的交集,但我不知道如何仅获得差异,因为使用 != 会将一个数据库中的每一行与另一个数据库中的每一行结合起来。
SELECT * FROM DBNEW.items AS newI, DBOLD.items AS oldI
WHERE newI.mainKey = oldI.mainKey
【问题讨论】:
标签: mysql database phpmyadmin