2016-07-21 8 views
2

Ich weiß wirklich nicht, wie man dieses Problem richtig benennt.SQL bekomme Zeilen basierend auf zwei IDs

Heres die Tabellenstruktur:

ID | CLIENT_ID | … 

ID primär und Autoinkrement. CLIENT_ID kann dagegen mehrfach auftreten.

Was ich will, ist die Zeilen von CLIENT_ID mit höchsten ID ... Heres einem Beispiel

ID | CLIENT_ID 
1 | 1 
2 | 1 
3 | 2 
4 | 3 
5 | 2 

Also hier CLIENT_ID 1 und 2 treten mehrmals zu holen (weil es eine neuere Version).

Nach der Abfrage i folgenden ID s in den Ergebnissen will: 2,4,5 (Da die höchsten ID in Reihen mit CLIENT_ID 1 ist die Reihe mit ID 2 und so weiter)

+0

Schauen Sie hier wählen: http://stackoverflow.com/questions/7745609/sql-select-only-rows-with -max-value-on-a-column Und ich denke, das zeigt Ihnen in die richtige Richtung: SELECT äußere. * FROM Tabellenname AS äußere LINKE OUTER JOIN Tabellenname als innere ON äußere.ID = innere.ID UND äußere. client_id Nyranith

Antwort

3

Wenn Sie alle brauchen die Spalten können Sie eine Auswahl in

select * from my_table 
where (id, client_id) in (select max(id), client_id 
          from my_table 
          group by client_id); 

verwenden, aber wenn Sie brauchen nur die ID

select id from my_table 
where (id, client_id) in (select max(id), client_id 
          from my_table 
          group by client_id); 

oder einfacher

select max(id) 
    from my_table 
    group by client_id; 
+0

Man das ist erstaunlich;) Ich hatte das nie selbst herausgefunden –

+0

@Grandy danke .. – scaisEdge

2
SELECT * FROM table GROUP BY client_id HAVING max(id) 

dies als ein Unter effizienter sein sollte

+0

Sieht gut aus ... schön und sauber. Aber ich bekomme den folgenden Fehler: Ausdruck # 1 der SELECT-Liste ist nicht in der GROUP BY-Klausel und enthält nichtaggregierte Spalte 'xyz.properties.id', die funktionell nicht von Spalten in der GROUP BY-Klausel abhängig ist; das ist inkompatibel mit sql_mode = only_full_group_by –

+0

Ok ist gerade laufen set sql_mode = '' direkt nach dem db connect wie hier erwähnt und es funktioniert jetzt: http://stackoverflow.com/a/23921234/2593099 –

+0

Hmm sieht aus wie ich noch nicht Ich arbeite nicht richtig. Es gibt falsche Felder zurück. –