Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggabungkan Selang Tarikh Bertindih dengan Cekap?
Menggabungkan Selang Tarikh Bertindih (Penyelesaian Diperbaiki)
Menggabungkan selang tarikh bertindih ialah tugas biasa dalam pemprosesan data. Walaupun penyelesaian yang disediakan adalah mudah, ia mungkin bukan yang paling cekap atau komprehensif. Berikut ialah penyelesaian yang dipertingkatkan yang menangani kemungkinan kes kelebihan:
-- Retrieve the overlapping ranges SELECT s1.StartDate, MIN(t1.EndDate) AS EndDate FROM @T s1 INNER JOIN @T t1 ON s1.StartDate <= t1.EndDate AND NOT EXISTS(SELECT * FROM @T t2 WHERE t1.EndDate >= t2.StartDate AND t1.EndDate < t2.EndDate) GROUP BY s1.StartDate -- Exclude subintervals EXCEPT -- Find overlapping intervals with extended end dates SELECT s1.StartDate, MAX(t1.EndDate) AS EndDate FROM @T s1 INNER JOIN @T t1 ON s1.StartDate > t1.StartDate AND s1.StartDate <= t1.EndDate GROUP BY s1.StartDate
Pertanyaan ini mengambil kira kes di mana pertindihan mungkin melangkaui julat asal. Klausa EXCEPT menapis julat lanjutan ini, menghasilkan set selang gabungan yang lebih tepat dan lengkap.
Output:
StartDate | EndDate 2010-01-01 | 2010-06-13 2010-06-15 | 2010-08-16 2010-11-01 | 2010-12-31
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Selang Tarikh Bertindih dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!