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

मैं क्रम संख्या को क्रमागत बनने के लिए कैसे रीसेट करूं?

यदि फ़ील्ड आपकी प्राथमिक कुंजी है...

... फिर, जैसा कि इस प्रश्न पर कहीं और कहा गया है, आपको आईडी नहीं बदलनी चाहिए। आईडी पहले से ही अद्वितीय हैं और आपको न तो उनकी आवश्यकता है और न ही उनका पुन:उपयोग करना चाहते हैं।

अब, उसने कहा...

अन्यथा...

यह बहुत संभव है कि आपके पास भिन्न हो कुछ एप्लिकेशन-डिफ़ाइंड ऑर्डरिंग के लिए फ़ील्ड (अर्थात, साथ ही पीके)। जब तक यह आदेश किसी अन्य क्षेत्र में निहित नहीं है (उदाहरण के लिए यदि यह उपयोगकर्ता द्वारा परिभाषित है), तो इसमें कुछ भी गलत नहीं है।

आप एक (अस्थायी) auto_increment . का उपयोग करके तालिका को फिर से बना सकते हैं फ़ील्ड करें और फिर auto_increment को हटा दें बाद में।

मैं UPDATE के लिए ललचाऊंगा आरोही क्रम में और एक वृद्धिशील चर लागू करें।

SET @i = 0;
UPDATE `table`
   SET `myOrderCol` = @i:[email protected]+1
 ORDER BY `myOrderCol` ASC;

ऐसा हर बार करना काफी बेकार लगता है आप आइटम हटाते हैं, लेकिन दुर्भाग्य से इस मैनुअल ऑर्डरिंग दृष्टिकोण के साथ आप इसके बारे में बहुत कुछ नहीं कर सकते हैं यदि आप कॉलम की अखंडता को बनाए रखना चाहते हैं।

आप संभवतः लोड को कम कर सकते हैं, जैसे कि myOrderCol . के साथ प्रविष्टि को हटाने के बाद 5 . के बराबर :

SET @i = 5;
UPDATE `table`
   SET `myOrderCol` = @i:[email protected]+1
 WHERE `myOrderCol` > 5
 ORDER BY `myOrderCol` ASC;

यह निम्नलिखित सभी मानों को एक-एक करके "शफ़ल" कर देगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JDBC प्रभावित पंक्तियों की गलत संख्या लौटाता है

  2. MySql, एक स्ट्रिंग को विभाजित करें और तालिका में डालें

  3. MySQL Group_Concat रिपीटिंग वैल्यूज

  4. Percona XtraDB क्लस्टर को 8.0 . में अपग्रेड करने के लिए टिप्स

  5. MySQL एक रिकॉर्ड में कई शब्दों का मिलान करने के लिए LIKE या REGEXP चुनें