SQL Zeile auswählen wo id = max (id)

7

Ich habe eine Tabelle, die Produktinformationen mit mehreren Exemplaren eines Produkts mit demselben Titel enthält, die durch verschiedene Farben und ihre IDs identifiziert werden. Ich muss die gesamte Zeile ausgeben, wo die ID = die maximale ID nach dem Titel gruppiert ist, aber ich kann es nicht dazu bringen, dies zu tun. Hier ist eine sehr vereinfachte Tabelle und einige Beispieldaten:

%Vor%

In diesem Beispiel mit meinem Code, bekomme ich 1 Rico rot blah1, wenn ich 3 Rico gelb blah3 will.

Hier ist der Code, den ich verwende:

%Vor%

UPDATE: Danke Leute,

Ich habe die Antwort von alinoz verwendet, um den folgenden Code zu finden, der funktioniert:)

%Vor%     
user1001369 18.10.2011, 15:06
quelle

7 Antworten

3

versuchen Sie, eine weitere Klausel zu Ihrer wo mit pd_id = (wählen Sie max (pd_id) von ...)

%Vor%

Diese Abfrage ist nicht optimal, aber sie würde den Job erledigen.

    
alinoz 18.10.2011, 15:09
quelle
19

Aaahhh, die guten alten ...

%Vor%

Natürlich sollten Sie dies entsprechend Ihren Bedürfnissen anpassen.

Außerdem denke ich, dass dies ein "Muss" ist: SQL Wählen Sie nur Zeilen mit Max-Wert für eine Spalte

    
Adrian Carneiro 18.10.2011 15:18
quelle
8

Ich denke, das könnte funktionieren (nicht getestet):

%Vor%     
Salman A 18.10.2011 15:13
quelle
5

einfach für eine Zeile von jedem (in diesem Fall 'id') Maximalwert

%Vor%     
DnD 30.11.2012 19:11
quelle
2

Neben Adrians und Salmans Ansatz gibt es auch diesen, der zu unterschiedlichen Ergebnissen führt, wenn zwei oder mehr Zeilen mit derselben (maximalen) ID vorhanden sind. Es wird nur eine Zeile pro Titel angezeigt, während die andere Abfrage alle anzeigt (in Ihrem Fall ist das wahrscheinlich irrelevant, wenn Sie nach ID sortieren, was ich für den Primärschlüssel halte):

%Vor%     
ypercubeᵀᴹ 18.10.2011 15:29
quelle
0

Da Sie bereits bestellen, können Sie in der Bedingung row number = 1 verwenden. Siehe link . und da deine db nicht bekannt ist. Ich kann keine spezifische Abfrage geben, sondern Sie in die Richtung

lenken

oder versuchen Sie sql top , was zu dem gleichen Ergebnis führt, da order by verwendet wird

    
Naveen Babu 18.10.2011 15:17
quelle
0

Ich denke, es ist nicht notwendig, Subselects zu verwenden:

%Vor%

Es ist nur ein schnelles Beispiel aus meinen Tests. Einfach in der substring_indexes auf die gleiche Weise bestellen und ein gutes Trennzeichen verwenden.

Viel Spaß

    
user637646 20.01.2016 13:01
quelle