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

एक तालिका के भीतर अतिव्यापी (दिनांक/समय) पंक्तियों का पता लगाएं

SELECT  m1.meetingID, m1.meetingStart, m1.meetingEnd, m2.meetingID
FROM    t_meeting m1, t_meeting m2
WHERE   (m2.meetingStart BETWEEN m1.meetingStart AND m1.meetingEnd
        OR m2.meetingEnd BETWEEN m1.meetingStart AND m1.meetingEnd)
        AND m1.meetingID <> m2.meetingID

यह प्रत्येक जोड़ी को दो बार चुनेगा।

यदि आप चाहते हैं कि प्रत्येक जोड़ी को केवल एक बार चुना जाए, तो इसका उपयोग करें:

SELECT  m1.meetingID, m1.meetingStart, m1.meetingEnd, m2.meetingID
FROM    t_meeting m1, t_meeting m2
WHERE   (m2.meetingStart BETWEEN m1.meetingStart AND m1.meetingEnd
        OR m2.meetingEnd BETWEEN m1.meetingStart AND m1.meetingEnd)
        AND m2.meetingID > m1.meetingID

सुनिश्चित करें कि आपके पास meetingStart . पर अनुक्रमणिकाएं हैं और meetingEnd क्वेरी के प्रभावी ढंग से काम करने के लिए।

MySQL , हालांकि, संभवत:INDEX MERGE . का उपयोग करेगा इस क्वेरी को चलाने के लिए, जो वर्तमान कार्यान्वयन में बहुत कुशल नहीं है।

आप इसका उपयोग करने का भी प्रयास कर सकते हैं:

SELECT  m1.*, m2.*
FROM    (
        SELECT  m1.meetingID AS mid1, m2.meetingID AS mid2
        FROM    t_meeting m1, t_meeting m2
        WHERE   m2.meetingStart BETWEEN m1.meetingStart AND m1.meetingEnd
                AND m2.meetingID <> m1.meetingID
        UNION
        SELECT  m1.meetingID, m2.meetingID
        FROM    t_meeting m1, t_meeting m2
        WHERE   m2.meetingEnd BETWEEN m1.meetingStart AND m1.meetingEnd
                AND m2.meetingID <> m1.meetingID
        ) mo, t_meeting m1, t_meeting m2
WHERE   m1.meetingID = mid1
        AND m2.meetingID = mid2

, जो अधिक जटिल है लेकिन संभवत:थोड़ा तेज चलेगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQLdb का उपयोग करके आप पायथन से SQL अलगाव स्तर को कैसे बदलते हैं?

  2. MySQL - 0 के साथ पैड ज़िप कोड कैसे सामने रखें?

  3. मैं लार्वा 5.5 में माइग्रेशन कैसे कर सकता हूं?

  4. MySQL में JSON सरणी कैसे खोजें?

  5. opencart - टेम्पलेट फ़ाइल के अंदर मॉड्यूल को मैन्युअल रूप से कैसे प्रदर्शित करें?