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

विंडो फ़ंक्शंस के लिए मैसकल वर्कअराउंड

MySQL के पास कोई विंडो फ़ंक्शन समर्थन नहीं है, लेकिन आप SELECT . में सहसंबद्ध उपश्रेणियों का उपयोग कर सकते हैं सूची ठीक एक कॉलम पुनर्प्राप्त करने के लिए:

SELECT
  event_id,
  event_type, 
  event_time,
  (SELECT COUNT(*) FROM events EC WHERE EC.event_type = E.event_type AND EC.event_time > E.event_time) AS subsequent_event_count
FROM
  events E
WHERE ...

EXPLAIN यह। यह निष्पादन तर्क के संदर्भ में CROSS APPLY . के समान ही है SQL सर्वर में।

एक और तरीका है सेल्फ जॉइन:

SELECT
  E.event_id,
  E.event_type,
  E.event_time,
  COUNT(EC.event_id) AS subsequent_event_count
FROM
  events E
  LEFT JOIN events EC
    ON E.event_type = EC.event_type AND E.event_type < EC.event_type
GROUP BY
  E.event_id,
  E.event_type,
  E.event_time

प्रदर्शन के लिए दोनों तरीकों का परीक्षण करें।

आप और भी बहुत कुछ रचनात्मक जोड़ सकते हैं, जैसे

EC.event_time > E.event_time AND EC.event_time < E.event_time + INTERVAL 1 DAY


  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. क्या मैं PHP के साथ MySQL चेतावनियों का पता लगा सकता हूं और उन्हें संभाल सकता हूं?

  3. mysql में एक चयन में अगर/अन्य स्थिति का उपयोग कैसे करें?

  4. हमने टाइमस्टैम्प पर डेटटाइम कब चुना?

  5. PHP से MySQL में सम्मिलित करना (jQuery/AJAX)