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

mysql में कॉलम डेटा का पुन:क्रमांकन

यदि परिवर्तनों की संख्या कम है, तो आप एक अनाड़ी, बल्कि कुशल अद्यतन विवरण उत्पन्न कर सकते हैं यदि आप शामिल वस्तुओं की आईडी जानते हैं:

UPDATE categories
JOIN (
    SELECT 2 as categoryID, 3 as new_order
    UNION ALL
    SELECT 3 as categoryID, 4 as new_order
    UNION ALL
    SELECT 4 as categoryID, 2 as new_order) orders
USING (categoryId)
SET `order` = new_order;

या (जो मुझे कम पसंद है):

UPDATE categories
SET `order` = ELT (FIND_IN_SET (categoryID, '2,3,4'),
                   3, 4, 2)
WHERE categoryID in (2,3,4);

यूपीडी :

यह मानते हुए कि आप श्रेणी की वर्तमान आईडी (या उसका नाम), उसकी पुरानी स्थिति और उसकी नई स्थिति जानते हैं, आप किसी श्रेणी को सूची में नीचे ले जाने के लिए निम्न क्वेरी का उपयोग कर सकते हैं (ऊपर जाने के लिए आपको between शर्त और new_rank rank+1 . की गणना ):

SET @id:=2, @cur_rank:=2, @new_rank:=4;

UPDATE t1
JOIN (
  SELECT categoryID, (rank - 1) as new_rank
  FROM t1
  WHERE rank between @cur_rank + 1 AND @new_rank
  UNION ALL
  SELECT @id as categoryID, @new_rank as new_rank
) as r
USING (categoryID)
SET rank = new_rank;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Qt एप्लिकेशन से ODBC के माध्यम से MySQL डेटाबेस से कैसे कनेक्ट करें?

  2. स्प्रिंटफ () एसक्यूएल इंजेक्शन से कैसे बचाता है?

  3. MySQL में प्राकृतिक छँटाई

  4. php mysql डेटाबेस में एक छवि कैसे जोड़ें?

  5. लोकलहोस्ट में सत्र ठीक से काम करता है लेकिन सीपीएएनईएल में नहीं