Überlappende Zeitintervalle zwischen zwei Tabellen in SQL finden
In einer Datenbank mit zwei Tabellen, die Start- und Endzeitfelder enthalten, ist dies häufig erforderlich um Zeilen zu identifizieren, in denen sich die Zeitintervalle schneiden. Diese Frage bietet eine Lösung zum effizienten Auffinden solcher Überlappungen in SQL Server 2005 mithilfe einer WHERE-Klausel.
Lösung:
Die folgende Abfrage kann verwendet werden, um überlappende Zeiträume zu finden Intervalle zwischen Zeilen in Tabelle1 und Tabelle2:
SELECT * FROM table1,table2 WHERE table2.start <= table1.end AND (table2.end IS NULL OR table2.end >= table1.start)
Erklärung:
Die Abfrage verwendet eine JOIN-Bedingung, um die Zeitintervalle aus beiden Tabellen zu vergleichen. Die WHERE-Klausel verwendet zwei Bedingungen:
Diese WHERE-Klausel bestimmt effektiv, ob sich das Zeitintervall von Zeile 2 mit dem Zeitintervall von Zeile 1 überschneidet. Durch die Verwendung eines Joins ruft die Abfrage Zeilen effizient ab aus beiden Tabellen, in denen solche Überschneidungen bestehen.
Das obige ist der detaillierte Inhalt vonWie finde ich überlappende Zeitintervalle zwischen zwei SQL-Tabellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!