Maison >base de données >tutoriel mysql >Comment récupérer efficacement les lignes avec la valeur la plus faible pour chaque revendeur dans MySQL ?

Comment récupérer efficacement les lignes avec la valeur la plus faible pour chaque revendeur dans MySQL ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-28 09:13:11684parcourir

How to Efficiently Retrieve Rows with the Lowest Value for Each Dealer in MySQL?

Récupérer les lignes avec la valeur la plus faible pour plusieurs revendeurs à l'aide de MySQL

Dans une base de données avec des colonnes comprenant l'identifiant, le nom, la valeur et le revendeur, vous visent à récupérer les lignes avec la valeur la plus basse pour chaque revendeur distinct. En essayant avec MIN() et GROUP BY, vous n'avez pas trouvé de solution.

Solutions recommandées :

Solution 1 :

SELECT t1.* FROM your_table t1
JOIN (
  SELECT MIN(value) AS min_value, dealer
  FROM your_table 
  GROUP BY dealer
) AS t2 ON t1.dealer = t2.dealer AND t1.value = t2.min_value

Solution 2 (Plus rapide) :

SELECT t1.* FROM your_table t1
LEFT JOIN your_table t2
ON t1.dealer = t2.dealer AND t1.value > t2.value
WHERE t2.value IS NULL

Explication :

La solution 1 utilise une sous-requête pour trouver la valeur minimale pour chaque revendeur. Il joint ensuite cette sous-requête à la table principale pour récupérer les lignes correspondantes.

La solution 2 exploite une auto-jointure pour trouver efficacement les lignes avec la valeur la plus basse pour chaque revendeur. Il utilise un LEFT JOIN, vérifiant s'il existe une ligne avec une valeur inférieure. Sinon, il s'agit de la valeur la plus basse pour ce revendeur.

Informations supplémentaires :

Il s'agit d'un problème MySQL fréquemment rencontré. Reportez-vous à la documentation ici : "Lignes contenant le maximum/minimum par groupe d'une certaine colonne" pour plus de détails.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn