Ich habe die folgende Tabelle mit diesen Aufzeichnungen als Beispiel:SQL wählen Sie in derselben Tabelle verbinden durch den Vergleich 2 Felder
+------+---------+---------+ | key | amount1 | amount2 | |------|---------|---------| | A | 100 | 0 | | B | 0 | 100 | | C | 100 | 0 | | D | 66 | 34 | | E | 99 | 12 | | F | 100 | 12 | | G | 12 | 99 | +------+---------+---------+
Ich mag würde alle Datensätze, in denen Felder amount1 einer Zeile löschen = Betrag2 eines anderen Zeile, aber nur paarweise: Wenn ich 2 Datensätze mit Betrag1 = Betrag2 finde, kann ich sie löschen, wenn ich einen dritten Eintrag finde, muss ich ihn behalten.
Beispiel: Die 1. Datensatz oben mit key = A hat amount1 = 100 und Betrag2 = 0 ist, hier wird das Paar Schlüssel B, wo amount1 = 0 und Betrag2 = 100. Zeile mit key = C gehalten werden müssen.
+------+---------+---------+ | key | amount1 | amount2 | +------+---------+---------+ | A | 100 | 0 | | B | 0 | 100 | Pair found with key = A : Delete key = A and key = B | C | 100 | 0 | No pair found as the 2 first records compose a pair | D | 66 | 34 | No pair found | E | 99 | 12 | No pair found | F | 100 | 12 | No pair found | G | 12 | 99 | Pair found with key = E : Delete records with key = E and key = G +------+---------+---------+
Das erwartete Ergebnis ist die unter einem:
+------+---------+---------+ | key | amount1 | amount2 | +------+---------+---------+ | C | 100 | 0 | | D | 66 | 34 | | F | 100 | 12 | +------+---------+---------+
Also entweder würde ich alle Paare bestimmen, wie dann löschen, oder direkt ohne Paar nur die Zeilen angezeigt werden soll.
Irgendwelche Hinweise?
Vielen Dank im Voraus für Ihre Hilfe,
'mysql' oder' SQL-Server' oder 'Oracle'? – Jens
Brauchen Sie in der Zeile A nur den Betrag1 und in der Zeile B den gleichen Betrag2, oder brauchen Sie gleichzeitig in der Zeile A den Betrag2 gleich dem Betrag1 in der Zeile B, bevor Sie die Zeilen A und B löschen können? Angenommen, Zeile E ist nicht vorhanden. Können Sie einfach die Zeilen F und G löschen, weil Zeile G Betrag1 gleich Zeile R Betrag2 ist (sie sind beide 12), obwohl der "andere Wert" 100 in einer Zeile und 99 in der anderen Zeile ist? – mathguy
auch streng genommen, durch Ihre Beschreibung, wenn eine Zeile beam1 = betrag2 hat, dann könnte sich die Zeile selbst löschen. Ist das das gewünschte Verhalten oder sollte die Zeile immer eine ** andere ** Zeile abbrechen? – mathguy