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
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 )
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.
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;
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
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)
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