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

Betinget mySQL-erklæring. Hvis sand OPDATERING, hvis falsk INDSÆT

OPDATERING: Bemærk, at du skal bruge IF EXISTS i stedet for IS NULL som angivet i det oprindelige svar.

Kode til at oprette en lagret procedure for at indkapsle al logik og kontrollere, om der findes smag:

DELIMITER //

DROP PROCEDURE `GetFlavour`//
CREATE PROCEDURE `GetFlavour`(`FlavourID` INT, `FlavourName` VARCHAR(20))
BEGIN
IF EXISTS (SELECT * FROM Flavours WHERE ID = FlavourID) THEN
UPDATE Flavours SET ID = FlavourID;
ELSE
INSERT INTO Flavours (ID, Name) VALUES (FlavourID, FlavourName);
END IF;
END //

DELIMITER ;

ORIGINAL:

Du kan bruge denne kode. Det vil kontrollere, om der findes en bestemt post, og hvis postsættet er NULL, vil det gå igennem og indsætte den nye post for dig.

IF (SELECT * FROM `TableName` WHERE `ID` = 2342 AND `Name` = 'abc') IS NULL THEN
INSERT INTO `TableName` (`ID`, `Name`) VALUES ('2342', 'abc');
ELSE UPDATE `TableName` SET `Name` = 'xyz' WHERE `ID` = '2342';
END IF;

Jeg er lidt rusten med min MySQL-syntaks, men den kode burde i det mindste få dig det meste af vejen dertil, i stedet for at bruge ON DUPLICATE KEY.



  1. udarbejdet erklæring med Eloquent ORM / laravel

  2. Hvordan får man Woocommerce Variation ID?

  3. Sådan får du vist status og systemvariabler i MySQL Workbench ved hjælp af GUI

  4. MONTH() Eksempler – MySQL