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

MySQL में यूज़र-डिफ़ाइन्ड वेरिएबल से एक कॉलम का मान दूसरे कॉलम से प्राप्त करें

MySQL में यूज़र-डिफ़ाइन्ड वेरिएबल (@var) का उपयोग करके पिछली पंक्ति के मान के आधार पर वर्तमान पंक्ति के लिए चल योग (क्यूमुलेटिव सम) या अन्य व्युत्पन्न मान की गणना कर सकते हैं।

टेबल बनाएं

mysql> CREATE TABLE DemoTable1868 (Value INT);

डेटा डालें

mysql> INSERT INTO DemoTable1868 VALUES(10), (20), (30), (40);

चल योग (क्यूमुलेटिव सम) गणना करें

mysql> SELECT Value,
    (@running := Value + @running) AS SecondColumn
    FROM DemoTable1868, (SELECT @running := 0) AS init;

आउटपुट:

+-------+--------------+
| Value | SecondColumn |
+-------+--------------+
|    10 |           10 |
|    20 |           30 |
|    30 |           60 |
|    40 |          100 |
+-------+--------------+

व्याख्या

  • (SELECT @running := 0) AS init → वेरिएबल को 0 से प्रारंभ करता है (क्रॉस जॉइन से प्रत्येक पंक्ति के लिए एक बार)।
  • @running := Value + @running → वर्तमान मान + पिछला योग = नया योग, वेरिएबल में असाइन।
  • परिणाम कॉलम में वही मान दिखता है।

महत्वपूर्ण चेतावनी

  • यूज़र वेरिएबल में असाइनमेंट का क्रम **गारंटी नहीं** है (विशेषकर जटिल क्वेरी, जॉइन, ऑप्टिमाइज़र पुनर्क्रमण में)।
  • MySQL 8.0+ में विंडो फ़ंक्शन उपयोग करें (विश्वसनीय, मानक):

आधुनिक तरीका (MySQL 8.0+)

SELECT Value,
    SUM(Value) OVER (ORDER BY Id ROWS UNBOUNDED PRECEDING) AS RunningTotal
FROM DemoTable1868;

अन्य उपयोग

  • पंक्ति संख्या: @row := @row + 1
  • पिछली पंक्ति मान: @prev := current_col
  • समूहवार गणना: वेरिएबल रीसेट के लिए CASE WHEN group_changed THEN @var := 0 ELSE @var := @var + val END
  1. - MySQL में उपयोगकर्ता वेरिएबल से दो फील्ड मानों को कैसे स्वैप करें?

    MySQL में दो कॉलम मान स्वैप करना: उपयोगकर्ता वेरिएबल का उपयोग MySQL में एक ही पंक्ति के दो कॉलम मानों को स्वैप करने के लिए उपयोगकर्ता वेरिएबल (@var) का उपयोग करके अस्थायी भंडारण किया जा सकता है। उदाहरण: Id=2 वाली पंक्ति में Number1 और Number2 स्वैप करें टेबल बनाएं: CREATE TABLE DemoTable ( Id I

  1. - MySQL में फ़ील्ड मान से कॉमा की गिनती करना

    LENGTH और REPLACE से वर्ण गिनती किसी वर्ण (जैसे कॉमा) की घटनाएँ गिनने के लिए: कुल लंबाई - उस वर्ण को हटाने के बाद की लंबाई। सिंटैक्स SELECT LENGTH(col) - LENGTH(REPLACE(col, ,, )) AS comma_count FROM table; तालिका और डेटा INSERT INTO DemoTable1510 VALUES(20,35), (45,67,89), (90,97,101,190); कॉ

  1. - MySQL में मान 0 होने पर दूसरे कॉलम का मान कैसे चुनें?

    IF() फ़ंक्शन का उपयोग यदि किसी कॉलम का मान 0 है तो दूसरे कॉलम का मान लेने के लिए IF() फ़ंक्शन प्रयोग करें: select IF(yourColumnName1=0, yourColumnName2, yourColumnName1) as anyAliasName from yourTableName; टेबल बनाना और डेटा डालना insert into demo30(value,original_value) values(30,0); डेटा देखना