Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में सॉर्ट करके मान बढ़ाना कैसे करें?

यूज़र-डिफाइंड वेरिएबल से क्रमबद्ध अपडेट

MySQL में किसी कॉलम को सॉर्ट क्रम के अनुसार क्रमिक मानों से अपडेट करने के लिए यूज़र-डिफाइंड वेरिएबल के साथ UPDATE ... ORDER BY का उपयोग करें।

सेटअप

mysql> CREATE TABLE DemoTable (
    FirstName VARCHAR(20),
    Position INT
);

mysql> INSERT INTO DemoTable VALUES('Chris', 100), ('Robert', 120), ('David', 130);

मूल डेटा

mysql> SELECT * FROM DemoTable;

+-----------+----------+
| FirstName | Position |
+-----------+----------+
| Chris     | 100      |
| Robert    | 120      |
| David     | 130      |
+-----------+----------+

Position को 10 से बढ़ाकर पुनः क्रमांकित करना

mysql> SET @myPosition := 100;
mysql> UPDATE DemoTable SET Position = @myPosition := @myPosition + 10 ORDER BY Position;

परिणाम

mysql> SELECT * FROM DemoTable;

+-----------+----------+
| FirstName | Position |
+-----------+----------+
| Chris     | 110      |
| Robert    | 120      |
| David     | 130      |
+-----------+----------+

व्याख्या

  1. SET @myPosition := 100 - वेरिएबल आरंभ करता है
  2. ORDER BY Position - वर्तमान Position के अनुसार क्रमबद्ध करता है
  3. @myPosition := @myPosition + 10 - प्रत्येक पंक्ति के लिए 10 बढ़ाता है और असाइन करता है

महत्वपूर्ण नोट्स

  • ORDER BY क्लॉज UPDATE में MySQL-विशिष्ट एक्सटेंशन है
  • वेरिएबल असाइनमेंट := ऑपरेटर का उपयोग करता है
  • यह तकनीक रैंकिंग, क्रमांकन, या सीक्वेंस पुनर्निर्माण के लिए उपयोगी है

सावधानी

MySQL 8.0+ में विंडो फ़ंक्शन (ROW_NUMBER()) अधिक आधुनिक विकल्प प्रदान करते हैं।

  1. - MySQL में न्यूनतम और अधिकतम मान प्राप्त करना

    किसी कॉलम में अधिकतम मान खोजने के लिए MAX(columnName) का उपयोग करना होगा, जबकि किसी कॉलम में न्यूनतम मान खोजने के लिए MIN(columnName) का उपयोग करना होगा। मान लीजिए किसी विशिष्ट कॉलम में उच्चतम और निम्नतम मान खोजने का सिंटैक्स इस प्रकार है: mysql> SELECT @min_val:=MIN(columnName),@max_val:=MAX(c

  1. - MySQL में प्रारंभिक मान और ऑटो इन्क्रीमेंट कैसे सेट करें?

    AUTO_INCREMENT विशेषता का उपयोग नई रो के लिए एक अद्वितीय पहचानकर्ता उत्पन्न करने के लिए किया जाता है। यदि किसी कॉलम को NOT NULL घोषित किया गया है, तो उस कॉलम को NULL असाइन करना संभव है ताकि संख्याओं का अनुक्रम उत्पन्न हो सके। जब किसी AUTO_INCREMENT कॉलम में कोई मान डाला जाता है, तो कॉलम उस मान पर

  1. - C++ में इन्क्रीमेंट ++ और डिक्रीमेंट -- ऑपरेटर्स

    इन्क्रीमेंट ऑपरेटर ++ अपने ऑपरेंड में 1 जोड़ता है, और डिक्रीमेंट ऑपरेटर -- अपने ऑपरेंड से 1 घटाता है। इसलिए, x = x + 1; वही है x++; के और इसी तरह, x = x - 1; वही है x--; के इन्क्रीमेंट और डिक्रीमेंट ऑपरेटर्स दोनों या तो ऑपरेंड से पहले (प्रीफिक्स) या बाद में (पोस्टफिक्स) आ सकते हैं। x = x + 1; को ++