0

運用用と分析用の 2 つのデータベースがあります。

分析データベースは、オペレーション データベースと 1 対 1 で同じではありませんが、非常によく似ています。

ここで、アーカイブ ファイル (csv) を分析データベースにロードしました (以前は空でした)。

分析に古いデータがあり、運用データベースに現在のデータがあります。

新しくロードされたレコードの一部がデータベースに既に存在するかどうかを確認するクエリを作成したいと考えています。

これを調べる方法はありますか?

編集:

まず初めに申し訳ありません。私のデータベースを見た後、間違いを犯しました。2 つの異なるデータベースを比較する必要はありません。phpmyadmin を介してオペレーション データベースをコピーしているときに、現在のデータを分析データベースにロードするのを忘れていました。したがって、古いレコードの一部がデータベースに既に存在するかどうかにかかわらず、1 つのデータベースで 2 つのテーブルを比較するだけで済みます。

私の最初のアイデアは/でした:

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

しかし、そのクエリを実行した後、結果として穴の行が得られますが、これは不可能です --> 間違ったクエリです。

古いデータの一部がまだ新しいデータに残っているかどうかを確認するにはどうすればよいですか?

PS: 表はリンクとしてコメントにあります。

  1. 編集:

わかりました私はそれを解決しました。ちょっとした比較クエリでした:

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;

どちらも正しい結果を破棄します。

それでも感謝します。この投稿は閉じることができます。

4

1 に答える 1

0

2 つのデータベースを比較するのに役立つツールがありますが、使用できる基本的な手法は、欠落しているレコードを識別するために主キーに依存できると仮定すると、次のとおりです。

select    oo.id
from      operations.orders oo
left join analytics.orders ao 
on        oo.id = ao.id
where     ao.id is null
于 2013-03-27T20:44:33.630 に答える