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

मूल्य परिवर्तन पर चयन करें

यह एक तरह की गैप्स-एंड-आइलैंड समस्या है। द्वीप समीपवर्ती पंक्तियाँ हैं जिनमें समान batchnum . है , और आप प्रत्येक द्वीप की शुरुआत चाहते हैं।

यहां, सबसे आसान तरीका शायद lag() है :

select *
from (
    select e.*,
        lag(batchnum) over(order by time) lag_batchnum
    from example e
) e
where not lag_batchnum <=> batchnum

ध्यान दें कि इसके लिए MySQL 8.0 की आवश्यकता है। पुराने संस्करणों में, एक विकल्प एक सहसंबद्ध उपश्रेणी का उपयोग करता है:

select e.*
from example e
where not batchnum <=> (
    select e1.batchnum
    from example e1
    where e1.time < e.time
    order by e1.time desc
    limit 1
)

यह रहा 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. वर्डप्रेस कैसे स्थापित करें:सर्वर सॉफ्टवेयर

  2. क्या SQL डेटाबेस में चित्र, ध्वनियाँ, वीडियो संग्रहीत करना संभव है?

  3. Class.forName(com.mysql.jdbc.Driver) कक्षा के लिए जार फ़ाइल में नहीं देख रहा है

  4. मैं अपने डेटाबेस कनेक्शन को कैसे सुरक्षित बना सकता हूँ?

  5. TRIGGER का उपयोग करके MYSQL में तालिका को स्वचालित रूप से कैसे अपडेट करें