SQL एक तालिका में किसी अन्य स्तंभ के मान के बराबर एक स्तंभ का मान सेट करता है


94

मेरे पास दो DATETIME स्तंभों वाली एक तालिका है।

उनमें से एक कभी NULL नहीं है, लेकिन उनमें से एक कभी-कभी NULL है।

मुझे एक क्वेरी लिखने की ज़रूरत है जो कॉलम A के मानों के बराबर कॉलम B के लिए सभी NULL पंक्तियों को सेट करेगा।

मैंने इस उदाहरण की कोशिश की है लेकिन चयनित उत्तर में SQL निष्पादित नहीं करता है क्योंकि MySQL कार्यक्षेत्र UPDATE में FROM को पसंद नहीं करता है।

जवाबों:




20

मैं इसे इस तरह से करूंगा:

UPDATE YourTable SET B = COALESCE(B, A);

COALESCE एक ऐसा फ़ंक्शन है जो अपना पहला गैर-अशक्त तर्क देता है।

इस उदाहरण में, यदि किसी दी गई पंक्ति पर B अशक्त नहीं है, तो अद्यतन कोई विकल्प नहीं है।

यदि B अशक्त है, तो COALESCE इसे छोड़ देता है और इसके बजाय A का उपयोग करता है।


5

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

update some_table set null_column = not_null_column where null_column is null

1

यहां नमूना कोड है जो आपको कॉलम बी में कॉलम ए का मुकाबला करने में मदद कर सकता है:

UPDATE YourTable
SET ColumnB = ColumnA
WHERE
ColumnB IS NULL
AND ColumnA IS NOT NULL;

मॉडरेटर नोट - कृपया अपनी पोस्ट में मान्य अपडेट वापस न करें।
भार्गव राव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.