Groessten Wert bestimmen
donroca
- datenbank
Hallo,
Ich habe eine Datenbank, die u.a. das Feld id enthaelt, Int, Autoincrement, also im Prinzip steht da 1,2,...8,9
Wie muss eine Abfrage gestaltet sein, die nur den letzten/hoechsten Wert ausgibt, also die 9 in diesem Fall?
Vielen Dank
Dieter
Hi,
Ich habe eine Datenbank, die u.a. das Feld id enthaelt, Int, Autoincrement, also im Prinzip steht da 1,2,...8,9
Wie muss eine Abfrage gestaltet sein, die nur den letzten/hoechsten Wert ausgibt, also die 9 in diesem Fall?
select max(idname) from tablename where -bedingung-
kann sein dass es Unterschiede bei verschiedenen DBS gibt, aber im Prinzip sollte dies das gewünschte Ergebnis liefern.
ciao
romy
Hallo,
danke Romy, das funktioniert. Meine DB ist MySQL, haette ich schon mal erwaehnen koennen...
Dieter
select id from tabellenname order by id desc limit 0,1
ginge auch!
Moin!
select id from tabellenname order by id desc limit 0,1
ginge auch!
Das ist aber vermutlich ein ziemlicher Performancefresser. Schließlich muß die gesamte Tabelle nach ID sortiert werden (sortieren ist immer aufwendig), während man bei max(ID) einfach nur den größten Wert feststellen muß, indem man (sofern es keinen passenden Index gibt) einmal die gesamte Tabelle durchliest.
- Sven Rautenberg
Hi Sven,
select id from tabellenname order by id desc limit 0,1
ginge auch!
Das ist aber vermutlich ein ziemlicher Performancefresser. Schließlich muß die gesamte Tabelle nach ID sortiert werden (sortieren ist immer aufwendig), während man bei max(ID) einfach nur den größten Wert feststellen muß, indem man (sofern es keinen passenden Index gibt) einmal die gesamte Tabelle durchliest.
der fehlende Index wäre in beiden Fällen das Problem: Er beschleunigt das Finden des Maximums (durch Rechtstraversierung im Baum), und er sagt einem (hinreichend guten) Query Optimizer, daß der sich das "sort" sparen kann, weil er statt dessen auch die Schleife aus dem Indexbaum "antreiben" kann, statt einen full table scan zu machen.
Ohne Index sind beide Verfahren nur bestenfalls linear schnell (ein guter Query OPtimizer sollte dem "LIMIT" ansehen können, daß der nicht die komplette Sortierung braucht, sondern nur die <n> maximalen Werte).
Viele Grüße
Michael