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

एसक्यूएल अगर अशक्त अद्यतन नहीं है

आप case का उपयोग कर सकते हैं इसके लिए अभिव्यक्ति। मुझे लगता है कि आप जो तर्क चाहते हैं वह है:

UPDATE users 
SET 
    username = Param1
    email = case when email is not null then Param2 end,
    password = case when password is not null then Param3 end
WHERE id = Param4;

या यदि आप ईमेल और पासवर्ड को अपडेट करना चाहते हैं यदि दोनों null नहीं हैं तब:

UPDATE users 
SET 
    username = Param1
    email = case when email is not null and password is not null then Param2 end,
    password = case when email is not null and password is not null then Param3 end
WHERE id = Param4;

अब प्रश्न अपडेट किया गया था और मैं समझता हूं कि आप अपडेट करना चाहते हैं यदि और केवल अगर दोनों ईमेल और पासवर्ड पैरामीटर खाली तार नहीं हैं। तो आप वास्तव में फ़िल्टरिंग करना चाहते हैं . मैं इसे इस प्रकार वाक्यांश दूंगा:

UPDATE users 
SET username = Param1, email = Param2, password = Param3 
WHERE id = Param4 and Param2 <> '' and Param3 <> ''

या यदि आप दोनों मापदंडों के लिए तर्क को अलग करना चाहते हैं:

UPDATE users 
SET 
    username = Param1, 
    email = case when Param2 <> '' then Param2 else email end, 
    password = case when Param3 <> '' then Param3 else password end
WHERE id = Param4;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. दो तालिकाओं में अद्वितीय मान लागू करें

  2. मैं गो और गो-एसक्यूएल-ड्राइवर के साथ mysql सर्वर से कैसे जुड़ सकता हूं?

  3. JDBC- mysql डेटाबेस में मान को पुनः प्राप्त नहीं कर सकता और तालिका को हटा सकता है

  4. MySQL:कॉलम को दो भागों में विभाजित करें

  5. पीएचपी 5:आप किस डीएएल का उपयोग कर रहे हैं?