2015-10-11 11 views
6

I habe folgende Tabelle (Tabelle A):MySQL - Wählen Sie den Minimalwert einer Spalte nach dem Minimalwert einer anderen Spaltenauswahl

 x   y 
--------------------------- 
     3   1 
     1   4 
     1   3 

Als Ergebnis i soll x = 1 und y = 3 (Erhalten von x als so niedrig wie möglich ist die oberste Priorität, y so niedrig wie möglich zu bekommen ist eine niedrigere Priorität). Deshalb mag ich eine SQL-Anweisung, die so etwas wie das ist:

Select Min(y), x 
FROM (SELECT MIN(x), y FROM tablea); 

Aber das gibt mir folgenden Fehlercode:

Fehlercode: 1248. Jede abgeleitete Tabelle einen eigenen Alias ​​

haben muss

Wenn ich versuche, dass:

Select Min(y), x 
FROM (SELECT MIN(x), y FROM tablea) as a; 

I ge t:

Fehlercode: 1054 Unknown column 'x' in 'field list'

+0

'Select Min (a.y), a.x FROM (SELECT MIN (x) AS x, y FROM TableA) als;' – lad2025

+0

Dank, das funktioniert! – Jariel

Antwort

3

Um zu vermeiden, Fehler unknown column Sie müssen allias zu MIN(x) hinzuzufügen:

Select Min(a.y), a.x 
FROM (SELECT MIN(x) AS x, y FROM tablea) as a; 

Aber Ergebnisse erhalten, wie Sie vorgeschlagen haben Ich würde Ihre Anfrage wie folgt umschreiben:

SqlFiddleDemo

+0

Yup danke das funktioniert – Jariel

+0

@Jariel Great;) – lad2025

+0

Die zweite Version ist korrekt, aber nicht die erste. –

3
SELECT x, y 
FROM tablea 
order by x, y 
limit 1 
+1

Dies ist optimal mit einem Index auf '(x, y)'. –

Verwandte Themen