2

主キー値 (users_id) が重複する 2 つの MySQL テーブルをマージする最良の方法を探しています。

どちらのテーブルも構造が異なり、

MEMEBR(member_id,memeber_email,member_dob,....) 現在 次の自動インクリメント値 27014

USER(users_id, email,name,dob,.....) 現在 次の自動インクリメント値 23734

両方のテーブルは異なるアプリケーションに属しており、主キー値 (Member_id と users_id) を参照する多くのログ/トランザクション テーブルがあります。

USER からデータを選択し、MEMBER に挿入するクエリを既に作成していますが、主な問題は IDS の重複です。最初は、MEMBER の最後のレコードの後に​​ USERS のすべてのレコードを追加しようと考えていますが、これにより新しい IDS が生成され、USER アプリケーションの参照テーブルに矛盾が生じます。

2番目に、追加のフィールドUsers_idをMEMBERに保存して、USERアプリケーションの関連レコードを追跡することを考えています。

次に、この追加フィールドに MEMBER アプリケーション ユーザー用に何を保存するかを指定します。現在、統合されたユーザーは両方のアプリケーションをシームレスに使用するため、このフィールドにはもちろん member_id と同じ値が必要です。

それでは、MEMBER(memeber_id,Users_id,email,....) 1,1,a@b.com 2,2,b@b.com . . . 27014,27014,z@b.com ここで MEMBER レコードを終了します 27015,1,aa@bb.com ユーザー テーブルからの 1 番目のレコード

今、私はここで一貫しています。

user_id 1 は member_id 1 (1,1,a@b.com) と member_id 27015 (27015,1,aa@bb.com) の両方に存在します。

これを修正するには、既存のすべてのメンバー アプリケーションと将来のユーザーの users_id フィールドに 0 を入力します。これは、ユーザー アプリケーションから既存の users_id を保存することを意味します。

同じ問題を理解して直面している場合、または私のように考えることができる場合は、助けてください。

誰かが質問や本当の質問について尋ねるかもしれません.

質問: 上記の問題で説明したように、2 つの異なるアプリケーションから 2 人のユーザー テーブルをマージするときに重複する ID を処理する最善の方法は何でしょうか。そのユーザーは両方のアプリケーションにシームレスにアクセスします。

どんな助けでも感謝します。

さらに情報が必要な場合はお知らせください。

4

2 に答える 2

1

1 つのユーザー レコードをマージすると、現在の ID と新しい ID になります。次に、すべてのテーブルでこれらの ID を更新します。

UPDATE table1 set UserID=:newID where UserID=:oldID
UPDATE table2 set UserID=:newID where UserID=:oldID
etc.

繰り返す。

于 2013-03-18T11:55:34.637 に答える
0

私は次のことをします:

  1. 新しいプライマリ/自動インクリメント キーと、マージ結果を保持するために必要なすべての列を含む別のテーブルを作成します。
  2. 両方のテーブルの結果を新しいテーブルに入力し、新しい ID を作成します
  3. MEMBER および USER を参照するすべてのテーブルを新しい ID で更新します (これには、新しいマージされたテーブルを指すように外部キー制約を削除/再作成することも含まれる場合があります)
  4. 古いテーブルを削除します。
于 2013-03-18T11:55:09.987 に答える