0
私はこのようにおおよそ見える2つのユーザーテーブルを持っています。2つのテーブルを比較し、完全に一致しない行を挿入する
users_old
| id | email | hash | salt |
+----+----------------+------+------+
| 1 | [email protected] | 1234 | abc |
| 2 | [email protected] | 5678 | def |
| 3 | [email protected] | 9123 | ghi |
| 4 | [email protected] | 4567 | jki |
users
| id | email | hash | salt |
+----+----------------+------+------+
| 1 | [email protected] | 1234 | abc |
| 2 | [email protected] | 8662 | zsq | <--- different
| 3 | [email protected] | 9123 | ghi |
| 4 | [email protected] | 4567 | jki |
| 5 | [email protected] | 8912 | xrz | <--- new
あなたはusers_oldがID、メール、ハッシュと塩が含まれていることを見ることができるように。ただし、ユーザーのテーブルには、同じエントリ+最後に新しいエントリが含まれ、元のエントリのいくつかは異なるハッシュ+ソルトを持ちます。
は、私は何を探していることはユーザーテーブルから新しいエントリを追加することによって、users_oldテーブルを更新し、異なるハッシュ+塩の組み合わせを持っているエントリが表示され、新しいとしても、テーブルの最後にそれらを追加することです。?エントリ(電子メールが同じであっても最終結果はこれを可能にすることができ、単一のクエリがあるただ一つのテーブル
users_old
| id | email | hash | salt |
+----+----------------+------+------+
| 1 | [email protected] | 1234 | abc |
| 2 | [email protected] | 5678 | def |
| 3 | [email protected] | 9123 | ghi |
| 4 | [email protected] | 4567 | jki |
| 5 | [email protected] | 8912 | xrz |
| 6 | [email protected] | 8662 | zsq |
する必要がありますので
ありがとう、ゴードン。明確にするために、 'select 1 from users_old'という行は、1行だけをチェックするという意味ではありませんか?異なるハッシュ/塩を持つ可能性がある複数の行があります – kokozz
@kokozz。 。 。 「1」は任意である。 'not exists'は、* rows *が返されたかどうかを調べることです。行の値は考慮していません。 –
ちょうどそれを試してみました。完璧に動作します。ご協力いただきありがとうございます! – kokozz