Laden...

Datensatz mit höchstem Wert eines Feldes aus einer Tabelle

Erstellt von pearsh vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.943 Views
pearsh Themenstarter:in
209 Beiträge seit 2007
vor 16 Jahren
Datensatz mit höchstem Wert eines Feldes aus einer Tabelle

verwendetes Datenbanksystem: Ms SQl

Hallo leutz,
ich suche schon einer weile nach einer lösung für folgendes Problem:
Wie kann ich den Datensatz in einer Tabelle finden , welchenr in einem bestimmten feld den
höchsten Wert hat und diesen dann selektieren?

Danke schon mal im vorraus

lg Jo0oker

S
8.746 Beiträge seit 2005
vor 16 Jahren

SQL kennt dafür den Befehl MAX.

J
32 Beiträge seit 2008
vor 16 Jahren

Nicht ganz, mit MAX bekommst du nur den maximalen Wert einer Spalte
z.B. SELECT MAX(ID) FROM MyTable
wenn du jetzt aber den Eintrag aus der Tabelle MyTable
holen möchtest benötigst du einen Subselect:

z.B. SELECT Id, Type FROM MyTable
WHERE Id = (SELECT MAX(ID) FROM MyTable)

S
27 Beiträge seit 2007
vor 16 Jahren

Hallo, ein Subselect ist nicht erforderlich.


Select id, type from MyTable order by id desc

:::

Text auf einem Button im Computer Museum Boston, USA

3.511 Beiträge seit 2005
vor 16 Jahren

Im Falle von Jo0oker ist es allerdings erforderlich, denn

...welcher in einem bestimmten feld den höchsten Wert...

Im Falle einer ID, die dann ein Autoincrement wäre, wäre deine Lösung allerdings richtig.

"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)

S
27 Beiträge seit 2007
vor 16 Jahren

Das hat imho mit Autoincrement nichts zu tun.
Das Statement funktioniert bei Datentypen wie Datum, Uhrzeit, Integer, Decimal usw.

:::

Text auf einem Button im Computer Museum Boston, USA

J
3.331 Beiträge seit 2006
vor 16 Jahren

Das hat imho mit Autoincrement nichts zu tun.

Du meinst aber wahrscheinlich (statt "order by id"):

Select First 1 id, type from MyTable order by type desc

... sortiert nach dem betreffenden Feld, und nur den ersten Datensatz holen (vielleicht heißt es auch TOP 1 o.ä.).

Jürgen

S
27 Beiträge seit 2007
vor 16 Jahren
  1. Das stimmt dann aber nicht mehr mit dem Beispiel von jnetrick überein! Auf das hatte ich mich sowohl in den Feldern als auch im Ergebnis bezogen. Dein Ergebnis liefert einen völlig anderen Datensatz.

  2. Wenn ich weiß, dass ich nur einen Datensatz benötige, lese ich auch nur den ersten, ist doch klar. Natürlich kann ich das von vornherein begrenzen. Ich habe es so simpel wie möglich geschrieben.

:::

Text auf einem Button im Computer Museum Boston, USA

pearsh Themenstarter:in
209 Beiträge seit 2007
vor 16 Jahren

Dank, ihr habt mir sehr geholfen.
Lösung:


SET @colum = (SELECT MAX(colum) FROM fahrerTable);

lg Jo0oker