Verwenden Sie MySQL, um den nächsten Datensatz nach einem übereinstimmenden Wert auszuwählen

5259
Martini002

Wie kann ich alle Zeilen neben der Zeile auswählen, die der Bedingung entsprechen?

Dies ist die Tabellenstruktur mit 10 Zeilen, aber die Anzahl der Zeilen nimmt in der Zukunft zu.

Tabellenstruktur Nur Text:

ID Date N1 1 DateTime 9  2 DateTime 2 3 DateTime 5 4 DateTime 9 5 DateTime 3 6 DateTime 6 7 DateTime 7 8 DateTime 9 9 DateTime 3 10 DateTime 9 

Hinweis: Die Zeichenfolge "DateTime" ist nur symbolisch. Dies ist eine beliebige Datumszeit.

Ich versuche die erste N1- Nummer nach der Nummer zu kennen: 9

Ich habe mehrere Möglichkeiten ausprobiert, aber das Ergebnis ist nicht das, was ich brauche.

Das erwartete Ergebnis ist:

ID Date N1 2 DateTime 2 5 DateTime 3 9 DateTime 3 
0

2 Antworten auf die Frage

1
Pimp Juice IT

Sie können eine temporäre Tabelle verwenden, um Iddie Datensätze zu speichern, deren WerteN1 gleich sind 9. Sie wählen dann alle Datensätze aus der TimesTabelle aus, in denen sich die IdWerte befinden, die in der temporären Tabelle enthalten sind, und einen, der der nächste Datensatz aus der IdSpalte ist, der nächste Datensatz nach dem N1Wert von 9.

SQL-Abfrage

DROP TABLE IF EXISTS t1; CREATE TEMPORARY TABLE t1 (SELECT id FROM numbers WHERE N1 = 9); Select * FROM t1;  SELECT * FROM numbers WHERE id IN (Select id+1 FROM t1); 

Oder

SELECT * FROM numbers WHERE id IN (SELECT ID+1 FROM numbers WHERE N1 = 9) 

Bestätigung

Wählen Sie * aus Zeiten

Mit obiger Abfrage


Weitere Ressourcen

Wenn ich nicht arbeite, werden IDs angezeigt (1,4,8,10). Wenn N1 = 9, lesen Sie meinen letzten Kommentar in der Frage Martini002 vor 7 Jahren 0
Ich werde es erneut in meinem MySQL-Server versuchen, um einen Fehltyp von mir zu bestätigen, aber der erste Versuch hat für mich nicht funktioniert, geben Sie mir bitte einen Moment Martini002 vor 7 Jahren 0
Ich weiß, warum es nicht funktionierte, `Select * FROM t1;` es ist in Ihrer 3. Zeile hahaha, funktioniert wie erwartet, vielen Dank an Sie Martini002 vor 7 Jahren 0
Aber wenn die "RowID" nicht sicher ist? Wenn ich "ID 5" lösche, kann die "RowID 6" nicht angezeigt werden Martini002 vor 7 Jahren 0
0
Martini002

Eine bessere Version der Moderator ImpersonatorAntwort wäre:

SELECT * FROM numbers WHERE id IN (SELECT ID+1 FROM numbers WHERE N1 = 9) 
Ich habe auch meine Antwort mit diesem Detail aus dieser Antwort für Sie aktualisiert. Pimp Juice IT vor 7 Jahren 0
Ich habe die neue Frage [hier] gepostet (https://superuser.com/questions/1198483/mysql-select-all-rows-after-matching-value-with-not-secuential-rowid). Martini002 vor 7 Jahren 0