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

पंक्ति कॉपी करें लेकिन नई आईडी के साथ

मान लें कि आपकी तालिका में निम्नलिखित फ़ील्ड हैं:

( pk_id int not null auto_increment primary key,
  col1 int,
  col2 varchar(10)
)

फिर, मूल्यों को एक पंक्ति से दूसरी पंक्ति में नए कुंजी मान के साथ कॉपी करने के लिए, निम्नलिखित क्वेरी मदद कर सकती है

insert into my_table( col1, col2 ) select col1, col2 from my_table where pk_id=?;

यह pk_id . के लिए एक नया मान जेनरेट करेगा फ़ील्ड और कॉपी मान col1 . से , और col2 चयनित पंक्ति में से।

तालिका में अधिक फ़ील्ड के लिए आवेदन करने के लिए आप इस नमूने का विस्तार कर सकते हैं।

अपडेट करें :
जॉनपी और मार्टिन की टिप्पणियों के संबंध में -

हम मुख्य तालिका से पहले बफर करने के लिए अस्थायी तालिका का उपयोग कर सकते हैं और इसे फिर से मुख्य तालिका में कॉपी करने के लिए उपयोग कर सकते हैं। अस्थायी तालिका में पीके संदर्भ फ़ील्ड के अपडेट से मदद नहीं मिलेगी क्योंकि यह पहले से ही मुख्य तालिका में मौजूद हो सकती है। इसके बजाय हम pk फ़ील्ड को अस्थायी तालिका से हटा सकते हैं और अन्य सभी को मुख्य तालिका में कॉपी कर सकते हैं।

Tim Ruehsen के जवाब के संदर्भ में संदर्भित पोस्टिंग में :

CREATE TEMPORARY TABLE tmp SELECT * from my_table WHERE ...;
ALTER TABLE tmp drop pk_id; # drop autoincrement field
# UPDATE tmp SET ...; # just needed to change other unique keys
INSERT INTO my_table SELECT 0,tmp.* FROM tmp;
DROP TEMPORARY TABLE tmp;

आशा है कि यह मदद करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैक ओएस पर एक्सएएमपीपी स्थापित करने के बाद MySQL सर्वर से कैसे कनेक्ट करें

  2. मैं mysql बाइनरी लॉग का उपयोग करके ड्रॉप डेटाबेस कमांड से कैसे पुनर्स्थापित करूं?

  3. एसक्यूएल नेस्टेड ऑर्डर द्वारा?

  4. MySQL के साथ शून्य से विभाजन को सशर्त रूप से कैसे संभालें

  5. Mysql और java में टाइमज़ोन विसंगति