Rumah >pangkalan data >tutorial mysql >Bagaimanakah SQL Boleh Mengenalpasti Selang Masa Bertindih Antara Dua Jadual dengan Cekap?

Bagaimanakah SQL Boleh Mengenalpasti Selang Masa Bertindih Antara Dua Jadual dengan Cekap?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-31 04:20:09264semak imbas

How Can SQL Efficiently Identify Overlapping Time Intervals Between Two Tables?

Mengenalpasti Pertindihan Selang Masa dengan Cekap dalam SQL

Masalah:

Diberikan dua jadual dengan lajur masa mula dan tamat, tugasnya adalah untuk mengenal pasti baris dalam jadual kedua yang bertindih dalam selang masa dengan setiap baris dalam jadual pertama. Syarat ini juga mempertimbangkan baris dalam jadual kedua dengan masa tamat nol.

Penyelesaian:

Menggunakan sintaks SQL Server 2005, klausa WHERE berikut berkesan menangani perkara ini masalah:

SELECT * 
FROM table1,table2 
WHERE table2.start <= table1.end 
AND (table2.end IS NULL OR table2.end >= table1.start)

Penjelasan:

  • Jadual klausa2.mula <= jadual1.akhir memastikan bahawa masa mula sebarang selang pertindihan yang berpotensi dalam jadual2 berada dalam masa tamat selang semasa dalam jadual1.
  • Syarat kedua, jadual2.akhir ADALAH NULL ATAU table2.end >= table1.start, mengendalikan masa tamat nol dalam jadual2. Jika masa tamat adalah batal, ia dianggap memanjangkan selang selama-lamanya, berpotensi bertindih dengan mana-mana selang berikutnya dalam jadual1. Sebagai alternatif, jika masa tamat ialah nilai yang sah dan lebih besar daripada atau sama dengan masa mula selang semasa dalam jadual1, pertindihan dikesan.

Atas ialah kandungan terperinci Bagaimanakah SQL Boleh Mengenalpasti Selang Masa Bertindih Antara Dua Jadual dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn