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

MySQL समूह लगातार पंक्तियों द्वारा

यहां एक और संस्करण है जो MySQL वेरिएबल्स के साथ काम करता है और इसके लिए 3 लेवल नेस्टिंग डीप की आवश्यकता नहीं है। पहला पोस्ट आईडी और दिनांक के अनुसार रिकॉर्ड को पूर्व-क्रमबद्ध करता है और जब भी पोस्ट आईडी, प्रकार और/या क्रिया में से किसी एक में कोई मान बदलता है तो उन्हें प्रति समूह एक अनुक्रमिक संख्या प्रदान करता है। उस से, इसका एक सरल समूह ... कोई रिकॉर्ड संस्करण T से T2 से T3 की तुलना नहीं कर रहा है ... क्या होगा यदि आप 4 या 5 मानदंड चाहते हैं ... क्या आपको और भी प्रविष्टियां घोंसला बनाना होगा?, या बस 2 और जोड़ें @ तुलना परीक्षण के लिए एसक्यूएल चर...

आपका कॉल जिस पर अधिक कुशल है...

select
      PreQuery.postID,
      PreQuery.PostType,
      PreQuery.Target,
      PreQuery.Action,
      PreQuery.Title,
      min( PreQuery.Date ) as FirstActionDate,
      max( PreQuery.Date ) as LastActionDate,
      count(*) as ActionEntries,
      group_concat( PreQuery.content ) as Content
   from
      ( select
              t.*,
              @lastSeq := if( t.action = @lastAction
                          AND t.postID = @lastPostID
                          AND t.postType = @lastPostType, @lastSeq, @lastSeq +1 ) as ActionSeq,
              @lastAction := t.action,
              @lastPostID := t.postID,
              @lastPostType := t.PostType
           from
              t,
              ( select @lastAction := ' ',
                       @lastPostID := 0,
                       @lastPostType := ' ',
                       @lastSeq := 0 ) sqlVars
           order by
              t.postid,
              t.date ) PreQuery
   group by
      PreQuery.postID,
      PreQuery.ActionSeq,
      PreQuery.PostType,
      PreQuery.Action    

यह रहा मेरा SQLFiddle नमूना का लिंक

शीर्षक के लिए, आप पंक्ति को समायोजित करना चाह सकते हैं...

group_concat (विशिष्ट PreQuery.Title) शीर्षक के रूप में,

कम से कम यह DISTINCT शीर्षकों को संयोजित कर देगा... अधिकतम क्वेरी दिनांक और अन्य तत्वों को सभी मानदंडों के अनुसार उस अधिकतम तिथि से संबद्ध एक शीर्षक प्राप्त करने के द्वारा इस संपूर्ण क्वेरी को एक और स्तर पर नेस्ट किए बिना प्राप्त करना बहुत कठिन है।



  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 LIKE बनाम LOCATE

  2. रिक्त स्थान वाली पंक्तियों को वापस करने के लिए MySQL क्वेरी

  3. MySQL:एकाधिक फ़ील्ड द्वारा समूहबद्ध करें और गिनें

  4. मैं MySQL में दो अलग-अलग तालिकाओं में समान पंक्तियों का चयन कैसे कर सकता हूं (क्या यह संभव है?)

  5. 'क्लोजर' के सीरियलाइजेशन की अनुमति नहीं है - लार्वा