Heim > Datenbank > MySQL-Tutorial > Wie kann SQL überlappende Zeitintervalle zwischen zwei Tabellen effizient identifizieren?

Wie kann SQL überlappende Zeitintervalle zwischen zwei Tabellen effizient identifizieren?

Mary-Kate Olsen
Freigeben: 2024-12-31 04:20:09
Original
259 Leute haben es durchsucht

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

Zeitintervallüberlappungen in SQL effizient identifizieren

Problem:

Gegeben sind zwei Tabellen mit Start- und Endzeitspalten, Die Aufgabe besteht darin, Zeilen in der zweiten Tabelle zu identifizieren, die sich in Zeitintervallen mit jeder Zeile in der ersten Tabelle überschneiden. Die Bedingung berücksichtigt auch Zeilen in der zweiten Tabelle mit Null-Endzeiten.

Lösung:

Unter Verwendung der SQL Server 2005-Syntax wird dies durch die folgende WHERE-Klausel effektiv behoben Problem:

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

Erklärung:

  • Die Klausel table2.start <= table1.end stellt sicher, dass die Startzeit eines möglichen überlappenden Intervalls in table2 liegt innerhalb der Endzeit des aktuellen Intervalls in table1.
  • Die zweite Bedingung, table2.end IS NULL OR table2.end >= table1.start, verarbeitet Null-Endzeiten in Tabelle2. Wenn die Endzeit null ist, wird davon ausgegangen, dass das Intervall auf unbestimmte Zeit verlängert wird und sich möglicherweise mit jedem nachfolgenden Intervall in Tabelle 1 überschneidet. Wenn alternativ die Endzeit ein gültiger Wert ist und größer oder gleich der Startzeit des aktuellen Intervalls in Tabelle1 ist, wird eine Überlappung erkannt.

Das obige ist der detaillierte Inhalt vonWie kann SQL überlappende Zeitintervalle zwischen zwei Tabellen effizient identifizieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage