web-dev-qa-db-fra.com

MYSQL comment sélectionner les données où un champ a une valeur min

S'il vous plaît, je veux sélectionner des données dans une table, où un champ spécifique a la valeur min, j'ai essayé ceci:

SELECT * FROM pieces where min(price)

Je ne suis pas bon avec MySQL, merci d'aide? Merci

29
Sami El Hilali

cela vous donnera un résultat qui a le prix minimum sur tous les enregistrements.

SELECT *
FROM pieces
WHERE price =  ( SELECT MIN(price) FROM pieces )
53
John Woo

Voici comment je le ferais (en supposant que je comprends la question)

SELECT * FROM pieces ORDER BY price ASC LIMIT 1

Si vous essayez de sélectionner plusieurs lignes où chacune d'entre elles peut avoir le même prix (qui est le minimum), la réponse de @ JohnWoo devrait suffire.

Fondamentalement, ici, nous ordonnons simplement les résultats par le prix dans l'ordre croissant (croissant) et prenons la première ligne du résultat.

42
sberry

Utilisez AYANT MIN (...)

Quelque chose comme:

SELECT MIN(price) AS price, pricegroup
FROM articles_prices
WHERE articleID=10
GROUP BY pricegroup
HAVING MIN(price) > 0;
5
pulsit

En fait, cela dépend de ce que vous voulez obtenir: - Juste la valeur min:

SELECT MIN(price) FROM pieces
  • Un tableau (plusieurs lignes) avec la valeur min: Est comme John Woo l'a dit ci-dessus.

  • Mais, s'il peut y avoir différentes lignes avec la même valeur min, le mieux est de les COMMANDER à partir d'une autre colonne, car après ou plus tard, vous devrez le faire (à partir de John Woo répondeur):

    SÉLECTIONNER * À PARTIR DES PIÈCES O price prix = (SÉLECTIONNER MIN (prix) À PARTIR DES PIÈCES) COMMANDER PAR stock ASC

4
Daniel Rodriguez

Cela fonctionne également:

SELECT
  pieces.*
FROM
  pieces inner join (select min(price) as minprice from pieces) mn
  on pieces.price = mn.minprice

(puisque cette version n'a pas de condition where avec une sous-requête, elle pourrait être utilisée si vous devez METTRE À JOUR la table, mais si vous avez juste besoin de SELECT, je recommanderais d'utiliser la solution John Woo)

3
fthiella

Manière efficace (avec n'importe quel nombre d'enregistrements):

SELECT id, name, MIN(price) FROM (select * from table order by price) as t group by id
1
Vijay Maurya