Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mencari Selang Masa Bertindih Antara Dua Jadual SQL?

Bagaimana untuk Mencari Selang Masa Bertindih Antara Dua Jadual SQL?

Mary-Kate Olsen
Lepaskan: 2025-01-03 21:44:43
asal
158 orang telah melayarinya

How to Find Overlapping Time Intervals Between Two SQL Tables?

Mencari Selang Masa Bertindih antara Dua Jadual dalam SQL

Dalam pangkalan data dengan dua jadual yang mengandungi medan masa mula dan tamat, ia selalunya diperlukan untuk mengenal pasti baris di mana selang masa bersilang. Soalan ini menyediakan penyelesaian untuk mencari pertindihan sedemikian dengan cekap dalam SQL Server 2005 menggunakan klausa WHERE.

Penyelesaian:

Pertanyaan berikut boleh digunakan untuk mencari masa bertindih selang antara baris dalam jadual1 dan jadual2:

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

Penjelasan:

Pertanyaan menggunakan syarat JOIN untuk membandingkan selang masa daripada kedua-dua jadual. Klausa WHERE menggunakan dua syarat:

  1. jadual2.mula <= jadual1.akhir memastikan bahawa masa mula baris 2 (jadual2) berlaku sebelum atau pada masa yang sama dengan masa tamat baris 1 (jadual1).
  2. (table2.end IS NULL ATAU table2.end >= table1.start) pemegang kes di mana masa tamat dalam jadual2 adalah NULL atau berlaku pada atau selepas masa mula dalam jadual1. Keadaan ini memastikan bahawa selang bertindih ditangkap.

Klausa WHERE ini dengan berkesan menentukan sama ada selang masa baris 2 bersilang dengan selang masa baris 1. Dengan menggunakan gabungan, pertanyaan mendapatkan semula baris dengan cekap daripada kedua-dua jadual yang wujud pertindihan sedemikian.

Atas ialah kandungan terperinci Bagaimana untuk Mencari Selang Masa Bertindih Antara Dua Jadual SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan