एक ही तालिका में मानों को एक कॉलम से दूसरे में कॉपी करें


168

मैं एक कॉलम से दूसरे कॉलम में कॉपी वैल्यू कैसे बना सकता हूं? मेरे पास है:

Database name: list
number | test
123456 | somedata
123486 | somedata1
232344 | 34

मैं चाहता हूँ:

Database name: list
number | test
123456 | 123456
123486 | 123486
232344 | 232344

मेरे पास क्या क्वेरी होनी चाहिए?

जवाबों:


362

प्रश्न में कोड के लिए संक्षिप्त उत्तर है:

UPDATE `table` SET test=number

यहां tableतालिका का नाम है और यह गंभीर उच्चारण (उर्फ बैक-टिक्स `) से घिरा हुआ है क्योंकि यह कीवर्ड से बचने के लिए MySQL सम्मेलन है (और TABLEउस मामले में एक कीवर्ड है)।

BEWARE, कि यह बहुत खतरनाक क्वेरी है जो testआपकी तालिका की हर पंक्ति में कॉलम में सब कुछ मिटा देगा इसे number(भले ही यह मूल्य हो)

WHEREअपनी क्वेरी को केवल पंक्तियों के विशिष्ट सेट तक सीमित करने के लिए क्लॉज का उपयोग करना अधिक सामान्य है :

UPDATE `products` SET `in_stock` = true WHERE `supplier_id` = 10

22
यह उन दुर्लभ अवसरों में से एक है जहां डेवलपर्स ने आम आदमी की तरह सोचा है।
ज़ैक्सर

9
सावधान यदि आप के साथ अपरिचित हैं update command... एक के बिना कहां खंड, इस आदेश होगा update सभी तालिका में रिकॉर्ड।
gmo

बहुत आसन! धन्यवाद! वाह!
जिमबस्लीस

1
@Gmo की चेतावनी के अनुसार, बहुत सारे डेटा को पोंछने की गंभीर क्षमता। पहले डेटाबेस का बैकअप बनाने पर विचार करें, फिर इसे एक पंक्ति में सीमित करने के लिए WHERE क्लॉज़ वाली क्वेरी चलाएँ। यदि आप परिणाम से खुश हैं, तो WHERE क्लॉज हटा दें।
ब्लॉगो

बहुत बढ़िया। उस बारे में सोचा नहीं था। धन्यवाद।
ओंकार मुसले

28
UPDATE `table_name` SET `test` = `number`

आप प्रक्रिया में कोई गणितीय परिवर्तन भी कर सकते हैं या मूल्यों को संशोधित करने के लिए MySQL फ़ंक्शन का उपयोग कर सकते हैं।



8

सावधान : अद्यतन स्तंभों का क्रम महत्वपूर्ण है

अच्छा : जो मैं चाहता हूं वह मौजूदा मूल्य की स्थिति को प्रीस्टैटस में सहेजता है

UPDATE Collections SET  PrevStatus=Status, Status=44 WHERE ID=1487496;

BAD : स्थिति और PrevStatus दोनों 44 के रूप में समाप्त होते हैं

UPDATE Collections SET  Status=44, PrevStatus=Status WHERE ID=1487496;

आप स्थिति = 44 क्यों स्थापित कर रहे हैं, हालांकि?
सेस्लेटिया

@sceletia समस्या को प्रदर्शित करने के लिए सिर्फ एक मनमाना मूल्य है
zzapper

6

निम्नलिखित का प्रयास करें:

UPDATE `list` SET `test` = `number` 

यह "संख्या" से सभी मानों की प्रतिलिपि बनाता है और इसे "परीक्षण" पर चिपका देता है


3

मेरे लिए काम करने के बाद ..

  1. सुनिश्चित करें कि आप अपने क्वेरी संपादक एप्लिकेशन में सेफ-मोड का उपयोग नहीं कर रहे हैं। यदि आप हैं, तो इसे अक्षम करें!
  2. फिर निम्नलिखित sql कमांड चलाएं

तालिका के लिए कहो, 'test_update_cmd', स्रोत मान स्तंभ col2, लक्ष्य मान स्तंभ col1 और स्थिति स्तंभ कॉलोनी: -

UPDATE  test_update_cmd SET col1=col2 WHERE col3='value';

शुभ लाभ!


-7

आप इसे प्रक्रिया के साथ भी कर सकते हैं इसलिए मेरे पास इसके लिए एक प्रक्रिया है

 DELIMITER $$
 CREATE PROCEDURE copyTo()
       BEGIN
               DECLARE x  INT;
            DECLARE str varchar(45);
              SET x = 1;
            set str = '';
              WHILE x < 5 DO
                set  str = (select source_col from emp where id=x);
            update emp set target_col =str where id=x;      
            SET  x = x + 1;
                END WHILE;

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