sql >> Database >  >> RDS >> Mysql

Voorwaardelijke mySQL-instructie. Indien waar UPDATE, indien onwaar INSERT

UPDATE: Let op:je moet IF EXISTS . gebruiken in plaats van IS NULL zoals aangegeven in het oorspronkelijke antwoord.

Code om opgeslagen procedure te creëren om alle logica in te kapselen en te controleren of Flavours bestaan:

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 ;

ORIGINEEL:

Je zou deze code kunnen gebruiken. Het zal controleren op het bestaan ​​van een bepaald record en als de recordset NULL is, zal het de nieuwe record voor u invoegen en invoegen.

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;

Ik ben een beetje roestig met mijn MySQL-syntaxis, maar die code zou je in ieder geval het grootste deel van de weg daarheen moeten brengen, in plaats van ON DUPLICATE KEY te gebruiken.



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

  2. Hoe gebruik je een variabele voor de databasenaam in T-SQL?

  3. Hoe DateTime naar VarChar . te converteren

  4. Een subtekenreeks extraheren uit een tekenreeks in T-SQL