MySQL: WÄHLEN Sie die höchste Spalte Wert, wenn, WO findet ähnliche Einträge
Meine Frage ist vergleichbar mit diese eine, aber nicht ganz das gleiche.
Ich habe eine Datenbank mit einer riesigen Menge von Büchern, mit den unterschiedlichen Editionen von einigen der gleichen Buchtitel. Ich bin auf der Suche nach einer SQL-Anweisung, die mir die höchste Auflage der einzelnen Titel, die ich auswähle, mit einer WHERE-Klausel (auf der Suche nach bestimmten Buch-Reihe). Hier ist, was die Tabelle sieht wie folgt aus:
|id|title |edition|year|
|-- | ------------------------- | ------- | ----|
|01|Serie One Title One |1 |2007|
|02|Serie One Title One |2 |2008|
|03|Serie One Title One |3 |2009|
|04|Serie One Title Two |1 |2001|
|05|Serie One Title Three |1 |2008|
|06|Serie One Title Three |2 |2009|
|07|Serie One Title Three |3 |2010|
|08|Serie One Title Three |4 |2011|
|-- | ------------------------- | ------- | ----|
Dem Ergebnis das ich Suche, ist dies:
|id|title |edition|year|
|-- | ------------------------- | ------- | ----|
|03|Serie One Title One |3 |2009|
|04|Serie One Title Two |1 |2001|
|08|Serie One Title Three |4 |2011|
|-- | ------------------------- | ------- | ----|
Der nächste, den ich bekam, war mit dieser Aussage:
select id, title, max(edition), max(year) from books where title like "serie one%" group by title;
aber es gibt die höchste Auflage und Jahr und beinhaltet die erste id, die es findet:
|-- | ----------------------- | ------- | ----|
|01|Serie One Title One |3 |2009|
|04|Serie One Title Two |1 |2001|
|05|Serie One Title Three |4 |2011|
|-- | ----------------------- | ------- | ----|
Dieser schicke sich auch nur nahe kommt, aber nicht das richtige Ergebnis:
select b.id, b.title, b.edition, b.year from books b inner join (select name, max(edition) as maxedition from books group by title) g on b.edition = g.maxedition where b.title like "serie one%" group by title;
Nutzung dieser ich bin immer einzigartige Titel, aber meist alten Ausgaben.
+1 @wxyz: Warum bringen Sie nicht das als Antwort?
Genial! Genau das, was ich Suche.
InformationsquelleAutor Ack | 2012-11-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie eine Unterabfrage verwenden:
Sehen SQL Fiddle mit Demo
Oder Sie können ein
IN
Klausel:Sehen SQL Fiddle mit Demo
InformationsquelleAutor Taryn
Hier ist ein SQLFiddle Beispiel:
In MySql können Sie dies tun:
InformationsquelleAutor valex
Die am meisten einfache Weise:
select * from (select id, title, edition, year from books order by title, edition desc) group by title;
InformationsquelleAutor Erik Berentaev