2015-10-11 13 views
6

Ho seguente tabella (Tabella A):MySQL - Selezionare il valore minimo di una colonna dopo aver selezionato il valore minimo di un'altra colonna

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

Come risultato che voglio x = 1 e y = 3 (Getting x come il più basso possibile è la priorità assoluta, ottenere il più basso possibile è una priorità più bassa). quindi voglio un'istruzione SQL che è qualcosa di simile:

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

Ma questo mi dà seguente codice di errore:

Codice errore: 1248. Ogni tabella derivata deve avere il proprio alias

Se provo che:

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

I ge t:

Codice errore: 1054. Unknown colonna 'x' nella 'lista campo'

+0

'Scegliere Min (a.y), a.x FROM (SELECT MIN (x) con x, y dalla tabella A) come,' – lad2025

+0

Grazie che funziona! – Jariel

risposta

3

Per evitare errori unknown column è necessario aggiungere allias a MIN(x):

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

Ma per ottenere i risultati come hai proposto vorrei riscrivere la query come:

Select x, MIN(y) AS y 
FROM tablea 
WHERE x = (SELECT MIN(x) FROM tablea); 

SqlFiddleDemo

+0

Yup grazie che funziona – Jariel

+0

@Jariel Grande;) – lad2025

+0

La seconda versione è corretta, ma non la prima. –

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

Questo è ottimale con un indice su '(x, y)'. –

Problemi correlati