2016-12-23 5 views
1

Ich habe versucht, nach einem bestimmten Schlüssel, aber der einzige höhere Wert zu gruppieren. zum Beispiel kann sagen, dass dies meine DatenMysql GROUP mit einem Schlüssel und wählen Sie den höheren Wert

ID  KEY  Name  Value1  Value2 
    1  52  James  0.5   0 
    2  52  Amy  0.2   0.1 
    3  65  Zeus  0.8   0.3 
    4  65  Chris  0.1   0 

Also, wenn ich

SELECT * FROM MyTable GROUP BY KEY 

tun, um die Ergebnisse, die ich bekommen ist

ID  KEY  Name  Value1  Value2 
    2  52  Amy  0.2   0.1 
    4  65  Chris  0.1   0 

Das Ergebnis, das ich will, ist,

ID  KEY  Name  Value1  Value2 
    1  52  James  0.5   0 
    3  65  Zeus  0.8   0.3 

I möchte, dass es nach KEY gruppiert wird, aber wähle die Person mit dem höheren Wert1, die zu dem bestimmten KEY gehört. Ich möchte keine

WHERE Value1 > 0.4 

verwenden Es gibt tausend Datensätze und eine Where-Anweisung würde nicht helfen. Ich möchte wissen, ob es eine Möglichkeit gibt, Value1 oder Value2 zwischen dem zugehörigen KEY zu vergleichen und den höheren Wert bei der Gruppierung auszuwählen.

Hoffe, das war klar und danke im Voraus. :)

Antwort

1

Zuerst wird eine Abfrage, um die Schlüssel und der Maximalwert

SELECT KEY, MAX(Value1) as mValue1 
FROM yourTable 
GROUP BY KEY 

Jetzt zu bekommen kommen zurück, um den Rest der Zeilen

SELECT yourTable.* 
FROM yourTable 
JOIN (
    SELECT KEY, MAX(Value1) as mValue1 
    FROM yourTable 
    GROUP BY KEY 
) AS sub on Sub.KEY = yourTable.KEY and Sub.mValue1 = yourTable.Value1 

Ta da zu bekommen!

+0

1. 'Schlüssel' ist reserviert. 2. Wenn mehrere Zeilen denselben Wert 1 haben, gibt Ihre Abfrage alle diese Zeilen zurück. Ich denke nur Top sollte zurückgegeben werden. – GurV

+0

@GurwinderSingh - 1. ja "KEY" ist reserviert, "yourTable" ist auch nicht der Name seiner Tabelle - Ich bin zuversichtlich, dass das OP mit diesen Problemen umgehen kann. 2) Das OP muss sagen, was passiert, wenn mehr als eine Zeile zurückgegeben wird, da die Spezifikation nicht sagt, was zu tun ist, einfach zuerst holen oder oben wird das gleiche Problem verursachen, mit dem er jetzt zu tun hat. – Hogan

+0

danke! ja, ich dachte mir, die kinks raus und es hat geklappt! Nochmals vielen Dank allen! – razerer

Verwandte Themen