この記事では、MySQL が 2 つのテーブルを比較して、異なるデータがあるかどうかを確認する方法を例を使って説明します。ご参考までに、詳細は以下の通りです。 データ移行では、多くの場合、2 つのテーブルを比較して、一方のテーブルに、もう一方のテーブルに対応するレコードがないレコードを識別する必要があります。 たとえば、古いデータベースとは異なるスキーマを持つ新しいデータベースがあるとします。私たちの仕事は、古いデータベースから新しいデータベースにすべてのデータを移行し、データが正しく移行されたことを確認することです。データをチェックするには、新しいデータベースと古いデータベースの 2 つのテーブルを比較し、一致しないレコードを特定する必要があります。 t1 と t2 という 2 つのテーブルがあるとします。次の手順で 2 つのテーブルを比較し、一致しないレコードを特定します。一般的な考え方は、最初に t1 をチェックし、次にデータ結果セットをループして、他のテーブルを 1 つずつクエリすることです。データが見つかった場合、そのデータは正しいです。見つからない場合、データが欠落しています。 もしこれが本当なら、あなたは本当に若すぎて単純すぎるのです。今回は、union all を使用して 2 つのテーブルを結合し、一時テーブルまたは派生テーブルを使用してデータを比較するという、より簡単なデータ比較ソリューションを紹介します。 union all の SQL の例を見てみましょう。 t1.pk、t1.c1を選択します。 t1から ユニオンオール t2.pk、t2.c1を選択します。 t2から その後、2 つのテーブルを作成し、データを挿入します。その後、テストを行うことができます。まずはテーブルの作成方法を見てみましょう。 テーブルt1を作成します( id int auto_increment 主キー、 タイトルvarchar(255) ); テーブルt2を作成します( id int auto_increment 主キー、 タイトルvarchar(255)、 メモvarchar(255) ); その後、t1 にデータを挿入します。 t1(タイトル)に挿入 VALUES('行1'),('行2'),('行3'); t2 にデータを挿入してみましょう: t2(タイトル)に挿入 VALUES('行1'),('行2'),('行3'); では、派生テーブルを使用してデータを比較してみましょう。 SELECT id,タイトル から ( t1からid、titleを選択 ユニオンオール t2からid、titleを選択 ) 表 GROUP BY id、タイトル count(*) = 1 である ID で並べ替える; もちろん、それらの間に違いはないので、実行後に返されるデータはありません。心配しないでください。t2 テーブルに別のデータ行を挿入しましょう。 t2(タイトル、メモ)に挿入 VALUES('新しい行4','新しい'); その後、2つのテーブルのタイトル列の値を再度比較します。新しい行は一致しない行なので、それが返されます。結果を見てみましょう。 mysql> SELECT id,title から ( t1からid、titleを選択 ユニオンオール t2からid、titleを選択 ) 表 GROUP BY id、タイトル count(*) = 1 である ID で並べ替える; +----+-----------+ | ID | タイトル | +----+-----------+ | 4 | 新しい行 4 | +----+-----------+ セット内の1行 さて、今回のヒントは以上です。 MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL 共通関数の概要」、「MySQL ログ操作スキル」、「MySQL トランザクション操作スキルの概要」、「MySQL ストアド プロシージャ スキル」、および「MySQL データベース ロック関連スキルの概要」 この記事が皆様のMySQLデータベース設計に役立つことを願っています。 以下もご興味があるかもしれません:
|
<<: VScode リモート SSH リモート編集とデバッグコード
>>: すべてまたは逆の選択機能を実現するJavaScript
<br />ページに <img src=""> が含まれ...
MySQL データベースのバージョンを 5.6.28 から 8.0.11 にアップグレード中にプロジ...
高さ:100% が機能しないのはなぜですか?この知識は不人気ではありませんが、使用する際には混乱する...
1. ソフトウェアのインストールパスを確認します。 Linuxソフトウェアをインストールできる場所は...
1. 正規表現マッチング大文字と小文字を区別するマッチングの場合 ~ ~*は大文字と小文字を区別しな...
1. 要素の幅/高さ/パディング/マージンのパーセンテージ基準要素の幅/高さ/パディング/マージンの...
この記事では、WebSocketを使用して簡単なチャットルームの会話を実装するための具体的なコードを...
前回の記事「1行のCSSコードの魅力」では、たった1行のCSSコードで生成できる美しい(奇妙な感じと...
あなたも私と同じように、コンピューターのファイルを整然と整理し、不要なファイルを適宜削除するプログラ...
1. Dockerリモート接続ポートを設定するサーバー上の docker.service ファイルを...
目次1. 上の写真2. ユーザーが存在しない3. コードをアップロードする1. 上の写真 2. ユー...
この記事では、例を使用して、MySQL で効率的なインデックスを作成する方法について説明します。ご参...
目次プレゼンテーション層ビジネスレイヤーコアプラグイン xlsx ExcelインポートExcelエク...
よくある質問から議論を始めましょう。CSS を使用して要素の高さを [ブラウザ コンテンツ ウィンド...
序文上記の Web ページ スタイルを記述しているときに、スタイルの値をどのように変更しても、ページ...