2017-12-20 14 views
-3

Ich habe drei Spalten in einer SQL-Tabelle, die etwa wie TYPE | aussieht ANMELDE NR. | ID in einer Tabelle namens "Autos". In der Spalte TYP ist das Fahrzeugmodell BMW, MERCEDES usw., in der REGISTRIERUNG NR. ist die Registrierungsnummer AB77TRR, UTYIE77 usw., und in der ID ist, wie der Name vermuten lässt, die ID 12, 13, 14 usw. Das Problem ist, dass in der ID-Spalte mehr als eine ID für das gleiche Modell und die Registrierung sein kann wie:Auswählen des letzten Datensatzes aus einer Tabelle in Sql

BMW AB77TRR 12 
BMW AB77TRR 13 
BMW AB77TRR 14 

die meisten Spalten haben nur eine ID, aber es gibt einige, die mehr ids haben und ich möchte nur die letzte registrierte auszuwählen und ich kann nicht LIMIT 1 oder TOP 1.

verwenden Wenn Ich führe diese wählen "Typ auswählen, Registrierung Nr., ID von Autos, wo (bmw, mercedes, audi, porsche) eingeben" es wird mir alle Datensätze in der Tabelle ID zeigen und ich möchte nur die letzte ID zeigen. Zum Beispiel, wenn ich ausführen, um diese select „select type, Registrierung nr, id von Autos, bei denen Typ in (BMW, Mercedes).“ Es wird mir zeigen:

BMW  AB77TRR 12 
BMW  AB77TRR 13 
BMW  AB77TRR 14 
MERCEDES UTYIE77 11 

Und ich möchte so aussehen:

BMW  AB77TRR 14 
MERCEDES UTYIE77 11 

Vielen Dank im Voraus.

+0

Bessere eindeutigen Index für Typen hinzuzufügen und Anmeldung Nr. –

+0

Fügen Sie den Probendaten einen weiteren MERCEDES mit einer anderen REGISTRATION NR hinzu, und passen Sie das erwartete Ergebnis entsprechend an. – jarlh

Antwort

3

Sie SQL Grundlagen von W3schools mit gutem Beispiel lernen sollten, jedenfalls ist dies ein klassischer Fall von Aggregatfunktion MAX:

SELECT type, registration, MAX(id) FROM cars GROUP BY type, registration 
+0

Dies würde jeden Datensatz aus den Beispieldaten zurückgeben. –

+0

ja und überprüfen Sie die Ausgabe, die er will;) –

+0

Schlechte Beispieldaten. – jarlh

1

Haben Sie eine Unterabfrage, um die maximale ID jedes Typs zurückzugeben. JOIN mit diesem Ergebnis:

select c1.* 
from carstable c1 
join (select TYPE, max(id) as maxid 
     from carstable 
     group by type) as c2 
    on c1.TYPE = c2.TYPE and c1.id = c2.maxid 
+0

Warum komplizieren Sie es? –

+0

@DanielE., Ist die Frage nicht sehr klar. Dies ist eine großartige Antwort auf die Art, wie ich die Frage lese. – jarlh

+0

Ich könnte nicht mehr zustimmen! –

Verwandte Themen