sql >> Database >  >> RDS >> Mysql

MySQL-insert bij dubbele update voor niet-PRIMAIRE sleutel

U hebt een query nodig die controleert of er een rij bestaat met uw record_id (of person_id). Als het bestaat, werk het bij, voeg anders een nieuwe rij in

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')

Een andere betere benadering is

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


  1. bestellen op newid() - hoe werkt het?

  2. INSERT meerdere records met ruby ​​on rails actieve record

  3. Is er iets mis met joins die het JOIN-sleutelwoord in SQL of MySQL niet gebruiken?

  4. Hoe voer je meerdere invoegquery's in SQL in één keer uit met PHP?