2011-10-19 13 views
53

मेरे पास दो DATETIME कॉलम वाली एक तालिका है।उसी तालिका में किसी अन्य कॉलम के मानों के बराबर एक कॉलम के SQL सेट मान

उनमें से एक कभी पूर्ण नहीं होता है, लेकिन उनमें से एक कभी-कभी नल होता है।

मैं जो स्तंभ A में स्तंभ B के लिए सभी शून्य पंक्तियों मूल्यों के बराबर सेट हो जाएगा

मैं this example की कोशिश की है, लेकिन एक प्रश्न चयनित जवाब में एसक्यूएल लिखने के लिए लागू नहीं है, क्योंकि MySQL Workbench नहीं करता है की जरूरत है अद्यतन में से पसंद नहीं लग रहा है।

उत्तर

92

ऐसा लगता है कि तुम सिर्फ एक तालिका में इस तरह तो कुछ काम कर रहे हैं:

update your_table 
set B = A 
where B is null 
15
UPDATE YourTable 
SET ColumnB=ColumnA 
WHERE 
ColumnB IS NULL 
AND ColumnA IS NOT NULL 
4

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

update some_table set null_column = not_null_column where null_column is null 
12

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

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

COALESCE एक समारोह है कि अपनी पहली गैर-शून्य तर्क देता है।

इस उदाहरण में, यदि किसी दिए गए पंक्ति पर बी शून्य नहीं है, तो अद्यतन एक नो-ऑप है।

यदि बी शून्य है, तो COALESCE इसे छोड़ देता है और इसके बजाय ए का उपयोग करता है।

0

अद्यतन YourTable
सेट ColumnB = Columna
कहां
ColumnB शून्य
और Columna है शून्य नहीं है,

संबंधित मुद्दे

 संबंधित मुद्दे