比较两个表的一致性(Mysql)与查询

时间:2013-03-27 19:47:24

标签: mysql sql database

我有2个数据库,一个用于操作,一个用于分析。

分析数据库与操作数据库不是1:1,但仍然非常相似。

现在我将存档文件(csv)加载到分析数据库中(之前它是空的)。

我在分析中有旧数据,在操作数据库中有我当前的数据。

我想编写一个查询来查明某些新加载的记录是否已存在于数据库中。

有没有办法检查出来?

编辑:

首先,我很抱歉。看了我的数据库后犯了一个错误。我不需要比较两个不同的数据库,而通过phpmyadmin复制操作数据库我忘记将当前数据加载到分析数据库中。 所以我只需要在一个数据库中比较2个表,是否有一些旧记录已经存在于数据库中。

我的第一个想法是/是:

SELECT * 
FROM orderlinesold t1 
LEFT JOIN orderlines t2 on t1.orderid = t2.orderid;

但是在运行该查询后,我得到了孔行,结果是不可能的 - >错误的查询。

如何查看某些旧数据是否仍在新数据中?

PS:表格在评论中作为链接。

  1. 编辑:
  2. 好的,我解决了。只是稍微比较一下查询:

    SELECT * 
    FROM ordersold t1  
    INNER JOIN orders t2 ON t1.orderid = t2.orderid 
    LIMIT 100000000;
    

    或:

    SELECT * 
    FROM orderlinesold t1 
    LEFT JOIN orderlines t2 ON t1.orderid = t2.orderid 
    WHERE t2.orderid IS NOT NULL 
    LIMIT 100000000;
    

    两者都丢弃了正确的结果。

    还是谢谢。这篇文章可以关闭。

1 个答案:

答案 0 :(得分:0)

有一些工具可以帮助您比较两个数据库,但是您可以使用的基本技术(假设您可以依赖主键来识别缺失的记录)是:

select    oo.id
from      operations.orders oo
left join analytics.orders ao 
on        oo.id = ao.id
where     ao.id is null