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

अगली और पिछली पंक्ति के मानों का संदर्भ देना

मान लें कि एक अद्वितीय आईडी कॉलम है और चीजों को दिलचस्प बनाने के लिए यह टाइमस्टैम्प कॉलम में वृद्धि को ट्रैक नहीं करता है। यह भी मान लें कि कोई भी टाइमस्टैम्प समान नहीं है।

select pt.* from
(Select max(ptime) as prevtime,min(ntime) as nextime from
((Select timestamp as ptime) as prev,
(Select timestamp as ntime) as next
where prev.ptime < next.ntime and prev.id<>next.id) as s1 group by ptime, ntime) as pn
inner join 
t as pt on pn.prevtime=pt.timestamp inner join 
t as nt on pn.nexttime=nt.timestamp
where pt.ncol!=nt.ncol;

व्याख्या:s1 समय के जोड़े प्रदान करता है जो एक दूसरे से पहले और बाद में होते हैं। pn समय के सभी आसन्न युग्मों की सूची प्राप्त करने के लिए उन्हें समूहित करता है। pt पिछली बार pn में शेष कॉलम प्रदान करता है, और nt शेष कॉलम अगली बार प्रदान करता है। जब कॉलम जिसे मैंने एनसीओएल स्विच नाम दिया है, तो पूर्व पंक्ति परिणाम में थूक जाती है। यदि कई गैर-शून्य मान हैं और नल और गैर-शून्य के बीच स्विच ढूंढना केवल दिलचस्प था, तो pt.ncol!=nt.ncol को isnull(pt.ncol)!=isnull(nt.ncol) में बदलें।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django:निष्पादन और MySQL के साथ कस्टम कच्चे SQL आवेषण का उपयोग करना

  2. php डेटाबेस सम्मिलित योजना के अनुसार काम नहीं कर रहा है

  3. PHP, टेक्स्ट इकोस नई लाइन के बिना डेटाबेस से बाहर, सभी एक टुकड़े में

  4. MySQL काउंट मैचिंग वर्ड्स

  5. jQuery-Ajax PHP कक्षाओं और कार्यों के साथ फ़ंक्शन पुनर्प्राप्त करें