Heim > Datenbank > MySQL-Tutorial > Wie finde ich überlappende Zeitintervalle zwischen zwei SQL-Tabellen?

Wie finde ich überlappende Zeitintervalle zwischen zwei SQL-Tabellen?

Mary-Kate Olsen
Freigeben: 2025-01-03 21:44:43
Original
141 Leute haben es durchsucht

How to Find Overlapping Time Intervals Between Two SQL Tables?

Ü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)
Nach dem Login kopieren

Erklärung:

Die Abfrage verwendet eine JOIN-Bedingung, um die Zeitintervalle aus beiden Tabellen zu vergleichen. Die WHERE-Klausel verwendet zwei Bedingungen:

  1. table2.start <= table1.end stellt sicher, dass die Startzeit von Zeile 2 (table2) vor oder gleichzeitig mit der Endzeit der Zeile liegt 1 (table1).
  2. (table2.end IS NULL OR table2.end >= table1.start) behandelt den Fall, in dem die Endzeit in Tabelle2 ist NULL oder tritt am oder nach der Startzeit in Tabelle1 auf. Diese Bedingung stellt sicher, dass überlappende Intervalle erfasst werden.

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!

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