Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Temukan baris (tanggal/waktu) yang tumpang tindih dalam satu tabel

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

Ini akan memilih setiap pasangan dua kali.

Jika Anda ingin setiap pasangan dipilih hanya sekali, gunakan:

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

Pastikan Anda memiliki indeks di meetingStart dan meetingEnd agar kueri bekerja secara efisien.

MySQL , namun, mungkin akan menggunakan INDEX MERGE untuk menjalankan kueri ini, yang tidak terlalu efisien dalam implementasi saat ini.

Anda juga dapat mencoba menggunakan:

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

, yang lebih kompleks tetapi kemungkinan besar akan berjalan sedikit lebih cepat.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah fungsi ke PDO

  2. Filter DataGrid untuk nama dengan TextBox secara dinamis

  3. Array multidimensi PHP MYSQL

  4. Dapatkan nilai Min dan Max dengan satu kueri MySQL dengan Group BY

  5. Menginstal MySQL Python di Mac OS X