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

एसक्यूएल रिटर्न 1,0 नए वेरिएबल में केस के आधार पर जब स्टेटमेंट कई अन्य वेरिएबल का जिक्र करता है

  • चूंकि कोई प्राथमिक कुंजी परिभाषित नहीं है, मैं मान रहा हूं कि डेटा को क्रमिक क्रम में creation_date पर दर्ज किया गया है और ladder_level . याद रखें वह डेटा MySQL में अनियंत्रित तरीके से संग्रहीत किया जाता है।
  • सबसे पहले, हमें डेटा को आवश्यक क्रम में प्राप्त करने के लिए एक उप-चयन क्वेरी का उपयोग करना होगा (जैसा कि पिछले चरण में हाइलाइट किया गया था)। यह उल्लेखनीय है कि Order By Select . के बाद निष्पादित किया जाता है खंड; इसलिए हमें पहले डेटा को क्रमबद्ध करना होगा, और फिर परिणाम-सेट का उपयोग व्युत्पन्न तालिका
  • अब, हम User- की मदद लेंगे- परिभाषित चर (सत्र-स्तर लगातार और सुलभ)। एक अन्य व्युत्पन्न तालिका में user_init_vars , हम उन्हें इनिशियलाइज़ करते हैं।
  • Select में खंड, हम पिछली पंक्ति मान के विरुद्ध वर्तमान पंक्ति के मान की तुलना करते हैं। तुलना के बाद, हम चर मान को वर्तमान पंक्ति के मान पर सेट करते हैं। आप इसे लूपिंग तकनीक के रूप में सोच सकते हैं, जिसका उपयोग हम अन्य प्रोग्रामिंग भाषाओं जैसे PHP, C++, Java आदि में करते हैं।
  • Case .. When भावों का उपयोग तुलना करने और ladder_change . को निर्धारित करने के लिए किया जाता है मूल्य।

क्वेरी #1

SELECT 
  dt.ID, 
  CASE WHEN DATE(@rd) <> DATE(dt.record_date) AND 
            dt.ladder_level > @ll 
       THEN 1 
       ELSE 0 
  END AS ladder_change, 
  @rd := dt.record_date AS record_date, 
  @ll := dt.ladder_level AS ladder_level 
FROM (SELECT ID, record_date, ladder_level 
      FROM conv_example 
      ORDER BY ID, record_date, ladder_level) AS dt 
CROSS JOIN (SELECT @rd := '', 
                   @ll := '') AS user_init_vars;

| ID    | ladder_change | record_date         | ladder_level |
| ----- | ------------- | ------------------- | ------------ |
| 324   | 0             | 2016-09-15 00:00:00 | a            |
| 324   | 0             | 2016-09-15 00:00:00 | b            |
| 324   | 0             | 2017-04-07 00:00:00 | b            |
| 324   | 0             | 2017-04-07 00:00:00 | c1           |
| 324   | 0             | 2018-09-08 00:00:00 | c1           |
| 324   | 0             | 2018-09-08 00:00:00 | e            |
| 1234  | 0             | 2013-04-03 00:00:00 |              |
| 1234  | 0             | 2014-07-03 00:00:00 | a            |
| 1234  | 1             | 2015-04-01 00:00:00 | b            |
| 1234  | 1             | 2016-09-15 00:00:00 | d            |
| 1234  | 0             | 2017-02-04 00:00:00 | b            |
| 1234  | 0             | 2017-04-03 00:00:00 | b            |
| 1234  | 1             | 2017-04-07 00:00:00 | c1           |
| 1234  | 1             | 2018-09-08 00:00:00 | e            |
| 31431 | 0             | 2013-04-03 00:00:00 |              |
| 31431 | 0             | 2014-07-03 00:00:00 | a            |
| 31431 | 1             | 2017-04-07 00:00:00 | c1           |
| 31431 | 1             | 2018-09-08 00:00:00 | e            |

DB Fiddle पर देखें




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL उपयोगिताएँ - ~/.my.cnf विकल्प फ़ाइल

  2. PHP MySQL कनेक्शन हठ

  3. mysql में वैश्विक sql_mode सेट करना

  4. MySqlCommand ()। ExecuteReader ()। GetString () काम नहीं करता है

  5. पुनरावृति के बिना कर्सर में रिकॉर्ड की mysql संख्या?