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

डेटा को एक MySQL तालिका से दूसरे में ले जाएँ

सबसे पहले आप एक कोष्ठक खो रहे हैं, जिसका आपको इस मामले में बिल्कुल भी उपयोग नहीं करना है

अपनी क्वेरी स्ट्रिंग को

. में बदलें
Insert Into archived (select * from registrations WHERE id=$id)
                     ^                                        ^

या सिर्फ

. के लिए
Insert Into archived select * from registrations WHERE id=$id

यह रहा SQLFiddle डेमो

दूसरा INSERT परिणामसेट नहीं लौटाता है, इसलिए आपको mysql_fetch_array() . का उपयोग नहीं करना चाहिए ।

तीसरा यदि आपका इरादा स्थानांतरित करने . का था न केवल डेटा कॉपी करने के लिए बल्कि आपको बाद में कॉपी की गई पंक्ति को भी हटाना होगा।

अब आप इसे एक संग्रहित प्रक्रिया में रख सकते हैं

DELIMITER $$
CREATE PROCEDURE move_to_archive(IN _id INT)
BEGIN
    START TRANSACTION;
    INSERT INTO archived 
    SELECT * 
      FROM registrations 
     WHERE id = _id;
    DELETE
      FROM registrations 
     WHERE id = _id;
    COMMIT;
END$$
DELIMITER ;

नमूना उपयोग:

CALL move_to_archive(2);

यह रहा SQLFiddle डेमो



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अपवाद:असमर्थित संचालन:RawSocket निर्माता (sqljocky5 के साथ डार्ट:^2.2.1)

  2. कोडनिर्देशक के तहत, क्या mysql_error() देखना संभव है?

  3. मैं अपने SQL परिणाम में सबसे पुरानी प्रविष्टियों को कैसे हटा सकता हूं?

  4. JTable के एकल कॉलम पर MySQL डेटाबेस से छवियों को प्रदर्शित करना

  5. COUNT () तालिका की केवल एक पंक्ति क्यों दिखाता है?