Ich habe zwei Spalten wie folgt:Wie findet man Überlappungen zwischen zwei Integer-Reihen in PostgreSQL?
start end id
120 125 1
1 13 2
14 17 3
100 121 4
99 100 5
2 6 6
Wie Sie id=4 and id=5
, eine Überlappung zwischen gibt es sehen können id=1 and id=4
, beachten Sie id=6 and id=2
ich sollte, dass start
immer kleiner oder gleich zu end
.
Wie kann ich diese Überlappungen mit SQL finden? Grundsätzlich möchte ich das Ergebnis sein:
1
2
4
5
6
Es hat einen großen Fehler ... es nur von ID zu höheren ids prüft .... was bedeutet, dass, wenn ich hinzufügen, in dem die Bedingung zu einer bestimmten ID Beispiel t.id = 4 ... es wird nicht zum Beispiel mit id = 2 verglichen. – avi
Die 'exists'-Lösung ist nicht korrekt, sie gibt auch' id = 3 'aus, die keine andere Serie überlappt. – MtwStark