【问题标题】:Select and compare 2 tables from different databases选择并比较来自不同数据库的 2 个表
【发布时间】: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


    【解决方案1】:
    SELECT * FROM DBOLD.items where mainKey not in (SELECT mainkey FROM DBNEW.items )
    

    这将使 DBOLD 中的数据丢失

    【讨论】:

      【解决方案2】:

      select * from DBNEW.items where mainkey not in (select mainkey from DBOLD.items)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-20
        • 2021-04-23
        • 1970-01-01
        相关资源
        最近更新 更多