Hallo,
Hallo, ich möchte den nächsthöheren Eintrag aus einer
Mysql-DB ausgeben.
was verstehst Du unter dem nächsthöheren Eintrag?
SELECT name WHERE order_id is > $aktuelle_order_id LIMIT 1
So würde es gehen,
Nö, das gibt einen Syntaxfehler, es fehlt die FROM-Klausel, die Kombination der Operatoren is und > ist nicht gestattet - und selbst wenn Du dies korrigierst, fehlt immer noch die notwendige ORDER-BY-Klausel, um sicher den gewünschten Wert zu erhalten.
oder gibt es einen speziellen Befehl für den Fall?
Es gibt bestimmt SQL-Anweisungen, mit denen Du Dein Ziel erreichen kannst.
Das hängt davon ab, was Dein Ziel ist, das hängt außerdem von Deinen Daten ab:
Wenn ich davon ausgehe, dass die Werte in der Spalte order_id eindeutig sind und Du den Namen haben möchtest der zu dem Datensatz gehört, dessen order_id den nächstgrößerern Wert als Deinen Vergleichswert hat, dann könntest Du dies zum Beispiel so erreichen
SELECT -- Gib mir
name -- die Namen
FROM -- aus
tabelle -- meiner Tabelle
WHERE -- wobei mich nur die Datensätze interessieren
order_id > vergleichswert -- deren order_id größer ist als mein Wert
ORDER BY -- sortiert
order_id -- nach der Spalte order_id
LIMIT -- und limitiere die Ergebnismenge
1 -- auf den ersten Datensatz
Schicker und verständlicher finde ich jedoch eine Umsetzung mit einer korrelierten Unterabfrage:
SELECT -- Gib mir
t1.name -- den Namen
FROM -- aus
tabelle t1 -- meiner Tabelle,
-- angesprochen unter dem Namen t1,
WHERE -- dessen
t1.order_id = ( -- order_id gleich dem
SELECT --
MIN(t2.order_id) -- minimalen Wert der Spalte order_id
FROM -- aus meiner
tabelle t2 -- Tabelle, diesmal mit t2 angesprochen,
WHERE -- ist, die
t2.order_id > vergleichswert -- größer sind als der Vergleichswert
)
Sofern Deine MySQL-Version keinen antiquarischen Wert besitzt, liefern Dir beide Statements den gleichen Wert. Nutze EXPLAIN, um herauszufinden, welches performanter ist.
Freundliche Grüße
Vinzenz