Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

सशर्त mySQL कथन। अगर सही है तो अपडेट करें, अगर गलत है तो INSERT

अपडेट करें: ध्यान दें कि आपको IF EXISTS . का उपयोग करने की आवश्यकता है IS NULL . के बजाय जैसा कि मूल उत्तर में बताया गया है।

सभी तर्कों को समाहित करने के लिए संग्रहीत कार्यविधि बनाने के लिए कोड और फ्लेवर मौजूद हैं या नहीं:

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 ;

मूल:

आप इस कोड का उपयोग कर सकते हैं। यह एक विशेष रिकॉर्ड के अस्तित्व की जांच करेगा, और यदि रिकॉर्डसेट न्यूल है, तो यह आपके लिए नया रिकॉर्ड डालेगा और सम्मिलित करेगा।

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;

मैं अपने MySQL सिंटैक्स पर थोड़ा कठोर हूं, लेकिन उस कोड को कम से कम आपको वहां से सबसे ज्यादा मिलना चाहिए, बजाय ON DUPLICATE KEY का उपयोग करने के।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या MySQL में एक बूलियन फ़ील्ड को एक क्वेरी के साथ उलटने का कोई तरीका है?

  2. MySQL में त्रुटि 1064 (42000)

  3. MySQL क्वेरी - URL नामों का उपयोग करके डेटा को इंडेंटिफाई करना जहां डेटा को एक पदानुक्रम में व्यवस्थित किया जाता है

  4. मैं mysql में एक साथ कई टेबल कैसे बदल सकता हूं?

  5. SailsJS - रिकॉर्ड बनाते समय त्रुटि प्राप्त किए बिना स्ट्रिंग विशेषता लंबाई कैसे निर्दिष्ट करें?