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

SQL का उपयोग करके पंक्तियों के बीच परिवर्तनों को कुशलतापूर्वक कैसे निर्धारित करें

आप इसे आजमा सकते हैं - मैं यह गारंटी नहीं देने जा रहा हूं कि यह बेहतर प्रदर्शन करेगा, लेकिन यह एक "पिछली" पंक्ति के साथ एक पंक्ति को सहसंबंधित करने का मेरा सामान्य तरीका है:

SELECT
    * --TODO, list columns
FROM
    data d
       left join
    data d_prev
       on
           d_prev.time < d.time --TODO - Other key columns?
       left join
    data d_inter
       on
           d_inter.time < d.time and
           d_prev.time < d_inter.time --TODO - Other key columns?
WHERE
    d_inter.time is null AND
    (d_prev.value is null OR d_prev.value <> d.value)

(मुझे लगता है कि यह सही है - इसे सत्यापित करने के लिए कुछ नमूना डेटा के साथ कर सकता है)।

मूल रूप से, विचार तालिका में स्वयं से जुड़ने का है, और प्रत्येक पंक्ति के लिए (d . में) ), उम्मीदवार पंक्तियों को खोजें (d_prev . में) ) "पिछली" पंक्ति के लिए। फिर एक पंक्ति खोजने का प्रयास करने के लिए एक और जुड़ाव करें (d_inter . में) ) जो वर्तमान पंक्ति के बीच मौजूद है (d . में) ) और उम्मीदवार पंक्ति (d_prev . में) ) अगर हमें ऐसी कोई पंक्ति नहीं मिलती है (d_inter.time is null ), तो वह उम्मीदवार वास्तव में पिछली पंक्ति था।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ब्राउज़र टाइमआउट के बिना PHP में बड़ी मात्रा में डेटा संसाधित करना

  2. केकेपीएचपी 3 - एसक्यूएल प्रारूप को सही करने और सत्यापन को सही करने के लिए स्थानीयस्ट्रिंगफॉर्मैट के साथ पार्स तिथि

  3. जॉइन क्वेरीज़ बनाम मल्टीपल क्वेश्चन

  4. Mysql ड्रॉप पार्टीशन और ट्रंकेट पार्टीशन में क्या अंतर है

  5. ऑब्जेक्ट डालने का सबसे तेज़ तरीका अगर यह SQLAlchemy के साथ मौजूद नहीं है