2010-10-13 22 views
6

Sono un principiante di SQL, sto usando questa query per cercare il valore minimo nel peso del campo della mia tabella.In SQL, come ottengo tutte le righe in cui il valore di una colonna è il più basso nella tabella?

SELECT product_id, 
     MIN(weight) 
    FROM table 
WHERE 1; 

Mostra un campo con il valore minimo, ma solo uno? Ma ho molti prodotti con lo stesso peso minimo. C'è un modo per specificare che devo mostrare tutti gli altri prodotti?

+2

Vuoi vedere i prodotti con il valore di peso minimo per la tabella? Se ce n'è più di uno, vuoi vederli tutti - giusto? Per quale database? –

+4

Ti rendi conto che il tuo "dove 1" non sta facendo nulla, giusto? Puoi rimuoverlo e tornerà esattamente lo stesso. –

risposta

16
select * from table where weight = (select MIN(weight) from table) 
+0

Funziona alla grande, grazie Fosco! :) – Zenet

+1

+1: sembra buono ... – RedFilter

3

Questo può essere quello che stai chiedendo:

SELECT product_id FROM table WHERE weight = (SELECT MIN(weight) FROM table); 

Come si può immaginare, questo selezionerà tutti prodict_id s dove il peso è pari al peso minimo nella tabella.

1

Non sono sicuro quale esattamente si vuole, ma uno di questi dovrebbe fare il trucco:

SELECT product_id, MIN(weight) FROM table WHERE 1 GROUP BY product_id 

(Mostra tutto gli ID di prodotto e il peso minimo per l'ID del prodotto)

SELECT product_id, weight FROM table WHERE weight = (SELECT min(weight) FROM table) 

(Trova tutti gli ID prodotto in cui il peso è uguale al peso minimo)

SELECT min(weight) FROM table; 

(Trova il minimo assoluto peso, e questo è quello)

Problemi correlati