2010-10-13 14 views
6

Je suis un débutant à SQL, j'utilise cette requête pour rechercher la valeur minimale dans le poids de champ de ma table.En SQL, comment obtenir toutes les lignes où la valeur d'une colonne est la plus basse dans la table?

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

Il affiche un champ avec la valeur min, mais un seul? Mais j'ai beaucoup de produits avec le même poids minimum. Existe-t-il un moyen de spécifier que j'ai besoin de montrer tous les autres produits?

+2

Vous voulez voir les produits avec le poids minimum pour cette table? S'il y en a plus d'un, vous voulez les voir tous - correct? Pour quelle base de données? –

+4

Vous réalisez que votre 'où 1' ne fait rien, n'est-ce pas? Vous pouvez l'enlever et il retournera exactement la même chose. –

Répondre

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

Fonctionne très bien, merci Fosco! :) – Zenet

+1

+1: ça a l'air bien ... – RedFilter

3

Cela peut être ce que vous vous demandez:

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

Comme vous pouvez le deviner, cela sélectionnera tous les prodict_id s où le poids est égal au poids minimal de la table.

1

Je ne sais pas exactement de quelle vous voulez, mais l'un de ceux-ci devraient faire l'affaire:

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

(Liste tous les ID de produit et le poids minimum par ID de produit)

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

(Trouvez tous les ID de produit où le poids est égal au poids minimum)

SELECT min(weight) FROM table; 

(Trouver le minimum absolu poids, et c'est tout)