これは私の現在のシナリオです:
1 つの列を除いてまったく同じ 2 つのテーブル (TB1 & TB2) があります。リモート SQL データベースからすべてをコピーし、現在の行を削除して新しい行を挿入する TB1 のすべてを更新する CRON があるため、TB1 がソース テーブルです。
TB2 の構造は TB1 とまったく同じですが、最後の行が true から false に変わります。デフォルトは false です。以下のサンプル テーブルを参照してください。
TB1 +--------------+---------------+---------------+- --------------+ | | ID | 列1 | 列2 |列3 | +--------------+---------------+---------------+- --------------+ | | 1 | 値1 | val-A |false | | | 2 | 値2 | val-B |false | | | 3 | 値1 | val-C |false | | | 4 | 値3 | val-D |false | | | 5 | 値4 | val-E |false | +--------------+---------------+---------------+- --------------+ TB2 +--------------+---------------+---------------+- --------------+ | | ID | 列1 | 列2 |列3 | +--------------+---------------+---------------+- --------------+ | | 1 | 値1 | val-A |真 | | | 2 | 値2 | val-B |false | | | 3 | 値1 | val-C |真 | | | 4 | 値3 | val-D |false | +--------------+---------------+---------------+- --------------+
ご覧のとおり、TB1 には追加の行 id=5 があります。col1 と col2 の両方の組み合わせは一意であり、それを検出しようとしているため、TB1.col1 と TB1.col2 の両方の新しい組み合わせは、TB2.col3 を維持しながら TB2 にコピーする必要があります。
私は次のことを試しましたが、私の場合は実際には機能しません。これは、組み合わせた違いではなく、すべての異なる値のみを表示するためです。
選択 TB1.col1、TB1.col2 FROM ( TB1 から TB1.col1、TB1.col2 を選択 ユニオンオール TB2 から TB2.col1、TB2.col2 を選択 ) TB1 TB1.col1 でグループ化 HAVING count(*) = 1 TB1.col1 によるオーダー
私は INSERT 部分が欠けていることを知っていますが、両方または少なくとも SELECT に関する助けをいただければ幸いです。
ありがとう!