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

एक चुनिंदा क्वेरी (MySQL) में केवल निरंतर डुप्लिकेट लेकिन सभी डुप्लिकेट को कैसे समाप्त करें?

आप पिछला मान प्राप्त करना चाहते हैं। यदि तिथियों में वास्तव में कोई अंतराल या डुप्लीकेट नहीं है, तो बस करें:

select t.*
from t left join
     t tprev
     on t.col1 = date_add(tprev.col1, interval 1 day)
where tprev.col2 is null or tprev.col2 <> t.col2;

संपादित करें:

यदि तिथियां इन शर्तों को पूरा नहीं करती हैं, तो आप चर का उपयोग कर सकते हैं:

select t.*
from (select t.*,
             (@rn := if(@v = col2, @rn + 1,
                        if(@v := col2, 1, 1)
                       )
             ) as rn
      from t cross join
           (select @v := 0, @rn := 0) params
      order by t.col1
     ) t
where rn = 1;

ध्यान दें कि MySQL SELECT . में भावों के मूल्यांकन के क्रम की गारंटी नहीं देता है . इसलिए वैरिएबल को एक एक्सप्रेशन में असाइन नहीं किया जाना चाहिए और फिर दूसरे में इस्तेमाल किया जाना चाहिए -- उन्हें एक ही एक्सप्रेशन में असाइन किया जाना चाहिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle और MySQL से प्रतिकृति समाधान की तुलना करना

  2. चयन कथन में RAND () का उपयोग करते समय MySQL समान परिणाम क्यों लौटा रहा है?

  3. MySQL:यदि मैं SQL क्वेरी में एक से अधिक बार किसी फ़ंक्शन का उपयोग करता हूं तो क्या यह हर बार फिर से गणना की जाएगी?

  4. MySQL में स्थानिक सूचकांक - त्रुटि - आपके द्वारा GEOMETRY फ़ील्ड में भेजे गए डेटा से ज्यामिति वस्तु प्राप्त नहीं कर सकता

  5. php . में एक बहुआयामी सरणी से MySQL में डेटा सम्मिलित करना