sql >> Database teknologi >  >> RDS >> Mysql

MySQL-indsættelse ved dubletopdatering til ikke-PRIMÆR nøgle

Du har brug for en forespørgsel, der kontrollerer, om der findes en række med dit record_id (eller person_id). Hvis den findes, opdater den, ellers indsæt ny række

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

En anden bedre tilgang er

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


  1. Ret fejl:"SELECTs til venstre og højre for UNION har ikke det samme antal resultatkolonner" i SQLite

  2. foreach loop:Brug af alle kerner i R (især hvis vi sender sql-forespørgsler inde i foreach loop)

  3. Kan vi importere SQL fra S3 bucket til AWS ec2 (instans)?

  4. Ægte vs. flydende point vs. penge