sql >> データベース >  >> RDS >> Mysql

非PRIMARYキーの重複更新でのMySQL挿入

    record_id(またはperson_id)に行が存在するかどうかを確認するクエリが必要です。存在する場合は更新し、存在しない場合は新しい行を挿入します

    IF EXISTS (SELECT * FROM table.person WHERE record_id='SomeValue')
        UPDATE table.person 
        SET some_text='new_some_text', some_other_text='some_other_text' 
        WHERE record_id='old_record_id'
    ELSE
        INSERT INTO table.person (record_id, person_id, some_text, some_other_text) 
        VALUES ('new_record_id', 'new_person_id', 'new_some_text', 'new_some_other_text')
    

    もう1つのより良いアプローチは

    です
    UPDATE table.person SET (...) WHERE person_id='SomeValue'
    IF ROW_COUNT()=0
        INSERT INTO table.person (...) VALUES (...)
    


    1. SQLDiagnosticManagerのあまり知られていない10の機能をご覧ください

    2. SQLServerログ配布とディザスタリカバリのインストールと構成-1

    3. MySQLGroup_Concat繰り返し値

    4. MySQLの2つの列をチェックする一意の制約