2016-05-27 4 views
2

Ich habe eine Datenbanktabelle mit 3 Spalten: id, number1, number2. id enthält 1,2,3...n und number1, number2 enthält reguläre int-Nummern.Zeige Spalte von max() andere Spalten

Ich möchte im Ergebnis die ID-Spalte zeigen, die den maximalen Wert von number1*number2 zeigt.

Ich schrieb dies:

select id, max(number1*number2) from numbers; 

Aber im Ergebnis es zeigt mir die id und number1*number2 Spalten.

Ich möchte nur id im Ergebnis anzeigen.

+0

@Mureinik ich sah, dass du redest, was ich geschrieben habe. Entschuldigung dafür bin ich irgendwie neu hier. Wie mache ich diese fetten Zeichen für Variablen? – Danny

+0

Sie können codeblcoks inline erstellen, indem Sie sie mit Backticks umgeben, oder in separaten Zeilen, indem Sie (mindestens) vier Leerzeichen einrücken. Siehe http://stackoverflow.com/editing-help für die vollständigen Details – Mureinik

+0

lesen Sie es vor etwa 5 Minuten und sah es. Danke! – Danny

Antwort

2

Sie könnten eine innere Abfrage verwenden, um die Multiplikation zu bekommen und dann die äußere verwenden, um die gesamte Zeile zu erhalten:

SELECT id 
FROM mytable 
WHERE (number1 * number2) = (SELECT MAX(number1 * number2) FROM mytable) 
+1

funktioniert wie ein Charme! Danke. – Danny

2

man so etwas versuchen:

select id 
from numbers 
order by number1*number2 desc 
limit 1 
+0

Dies würde funktionieren, solange das Ergebnis von 'number1 * number2' eindeutig ist. Wenn zwei oder mehr Zeilen das gleiche Produkt haben würden, würden Sie alle außer einem von ihnen vermissen. – Mureinik

+0

@Mureinik ja, wahrscheinlich missverstanden Frage, aber es sieht aus wie OP einzelne ID wollen, vielleicht bin ich falsch –