0

オフライン アカウントを使用してオンライン データベースを更新する際に問題が発生しました。聞いてはいけない...私のドリフトを理解するなら、それはチャーリー・フォックストロットですが、それでも解決策を見つけなければなりません.

次のロジックを実行する必要がありますが、それは私のスキル セットをはるかに超えています。import テーブルには約 28,000 のレコードがあり、members および member_data テーブルには 2,400 のレコードがあります。強いカンフーを持った親切な魂がこのようなもので私を助けてくれることを願っています.

テーブル:

members
    id
    group_id
member_data
    id
    account
    phone
    modified
import
    account
    phone

望ましいロジック:

Loop through each record in import table and search for match between import.account and member_data.account.

If Match:
    Update members.group_id to '5'.
    Update member_data.modified to '1'.

If No Match:
    Search for match between import.phone and member_data.phone.
        If Match:
            Update member_data.account with import.account of the matched record.
            Update members.group_id to '5'.
            Update member_data.modified to '1'.
4

1 に答える 1

0

まず、「その他の非標準実装」セクションでこのリンクを調べることができます。

マージ (SQL)

TSQL の経験を MySQL のフレーバーに正しく変換する場合、INSERT...ON DUPLICATE KEY UPDATE ステートメントと呼ばれるものが必要になります。創業者はこちら:

INSERT...ON DUPLICATE KEY UPDATE に関する MySQL ドキュメント

これが行っていることは、基本的に、キー違反が発生するまでレコードを挿入することです。あなたの場合、口座番号はレコードを一意にします。キー違反 (一致するレコード) が見つかったら、更新ステートメントを使用して何を実行するかを指定できます。

これがあなたの将来に少し役立つことを願っています。

于 2012-12-05T17:06:09.307 に答える