मैं एक ही तालिका में एक कॉलम से दूसरे कॉलम में डेटा कैसे कॉपी कर सकता हूं?


253

SQL में तालिका के सभी रिकॉर्ड के लिए स्तंभ A से स्तंभ B तक डेटा की प्रतिलिपि बनाना संभव है?



@DanielDiPaolo प्रश्न एक अलग तालिका में एक कॉलम की नकल करने के लिए है
Nick T

जवाबों:


466

इस बारे में कैसा है

UPDATE table SET columnB = columnA;

यह हर पंक्ति को अद्यतन करेगा।


1
यह भी काम करेगा यदि आप पुराने मान को अन्य कॉलम में स्थानांतरित करना चाहते हैं और पहले को अपडेट करें UPDATE table SET columnA = 'new value', columnB = columnA:। जैसे अन्य उत्तर कहते हैं - केवल जो आवश्यक है उसे अपडेट करने के लिए WHERE क्लॉज मत भूलना।
कार्ल डि ऑर्टस

5
मैं कुछ जटिल खरीद में प्रत्येक रिकॉर्ड पर एक लूप कर रहा हूँ जब जवाब इतना आसान है
deFreitas

6
@deFreitas एक बुद्धिमान व्यक्ति ने मुझसे कहा: यदि आप SQL में कुछ पूरा करने के लिए एक लूप लिखने के बारे में सोच रहे हैं तो आप इसे गलत कर रहे हैं।
डैनियल पैट्रिक

95
UPDATE table_name SET
    destination_column_name=orig_column_name
WHERE condition_if_necessary

10
@ मर्क, यह वास्तव में समझ में आता है, यह क्यों नीचा है? मेरे पास एक स्थिति थी जहां मुझे एक कॉलम से दूसरे कॉलम में दिनांक मान कॉपी करने की आवश्यकता है, और यह केवल कॉलम के कुछ पर लागू होता है, और सभी पर नहीं। इसलिए कथन में WHERE होना आवश्यक होगा।
finnTheHumin

5
@finnTheHuman प्रश्न पूछता है कि "सभी रिकॉर्ड से डेटा कॉपी कैसे करें" जो पहले उत्तर सही ढंग से जवाब देता है इसलिए यह कुछ भी नहीं जोड़ता है
mmmmmm

7
@Mark "यह पुराने स्वीकृत उत्तर से कैसे भिन्न होता है", इसमें WHERE क्लॉज है। "तो यह कुछ भी नहीं जोड़ता है", मैं असहमत हूं, यह कुछ जोड़ता है। यह एक अच्छा बिंदु है कि जहां क्लर्क अगर आवश्यक है। हमें जवाब देने के लिए जिम्मेदार होना चाहिए। नफरत करते हैं 'नफरत
finnTheHumin

मेरे मामले में मैंने एक last_seen कॉलम जोड़ा है। UPDATE user SET last_seen = first_seen WHERE last_seen IS NULL

मैं आप में से एक से असहमत हूं। लेकिन कहने के लिए तैयार नहीं है! जहां क्लॉज एक इलाज की तरह काम करता है
एंड्रयू डे

0

यदि सुरक्षित मोड सक्षम नहीं है तो यह उस कॉलम की सभी पंक्तियों को अपडेट कर देगा।

UPDATE table SET columnB = columnA;

यदि सुरक्षित मोड सक्षम है तो आपको एक क्लॉज का उपयोग करना होगा। मैं प्राथमिक कुंजी का उपयोग करता हूं 0 से अधिक मूल रूप से सभी अपडेट किए जाएंगे

UPDATE table SET columnB = columnA where table.column>0;

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