Hallo Entwickler,
ich bitte um Hilfe bei einer Datensatzabfrage. Ich habe ein Datensatz und möchte den darauf folgenden abfragen.
Der Datensatz ist aus einer Abfrage, die nach zwei Spalten (order by a, b) sortiert wurde, wobei in Spalte 'a' Werte mehrmals vorkommen können. Daher habe ich noch nach einem Zeitstempel (Spalte 'b') sortiert um eine eindeutige Reihenfolge zu erlangen.
Nun möchte ich den nächsten Datensatz auslesen.
Habe die Werte für Spalte 'a' und 'b' des bekannten Datensatzes ausgelesen und nenne sie 'wa' und 'wb'.
Ist der Wert von Spalte 'a' einmalig, bekomme ich mit
den nächsten Wert. Dies ist nicht der Fall, wenn der Wert des bekannten Datensatzes 'wa' mehrmals vorkommt.
Meine bisherigen Lösungsversuche:
- Ich verwende kein 'limit' und frage jeden Datensatz ab, bis ich auf meinen Datensatz stoße
. Der nächste Datensatz ist dann der gesuchte. Dies ist wahrscheinlich sehr rechenintensiv.
- Ich frage auch die Datensätze ab, die ebenfalls den Wert 'wa' besitzen
. Die Anzahl der abzufragenden Datensätze (x) kann ich zuvor mit
ermitteln.
Bestimmt gibt es eine elegantere Lösung.
Grüße, Klaus
ich bitte um Hilfe bei einer Datensatzabfrage. Ich habe ein Datensatz und möchte den darauf folgenden abfragen.
Der Datensatz ist aus einer Abfrage, die nach zwei Spalten (order by a, b) sortiert wurde, wobei in Spalte 'a' Werte mehrmals vorkommen können. Daher habe ich noch nach einem Zeitstempel (Spalte 'b') sortiert um eine eindeutige Reihenfolge zu erlangen.
Nun möchte ich den nächsten Datensatz auslesen.
Habe die Werte für Spalte 'a' und 'b' des bekannten Datensatzes ausgelesen und nenne sie 'wa' und 'wb'.
Ist der Wert von Spalte 'a' einmalig, bekomme ich mit
Code:
select * from table where a>wa order by a, b limit 1
Meine bisherigen Lösungsversuche:
- Ich verwende kein 'limit' und frage jeden Datensatz ab, bis ich auf meinen Datensatz stoße
Code:
select * from table order by a, b
- Ich frage auch die Datensätze ab, die ebenfalls den Wert 'wa' besitzen
Code:
select * from table where a>=wa order by a, b limit x
Code:
select count(*) from table where a=wa
Bestimmt gibt es eine elegantere Lösung.
Grüße, Klaus
Comment