Obtention de la valeur la plus basse pour chaque revendeur dans MySQL
Considérons une base de données avec la structure suivante :
CREATE TABLE your_table ( id INT NOT NULL, name VARCHAR(255) NOT NULL, value INT NOT NULL, dealer VARCHAR(255) NOT NULL );
Objectif : Récupérer la ligne avec la valeur la plus basse pour chaque unique revendeur.
Solution :
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 (Recommandé) :
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;
Discussion :
La solution 1 utilise une sous-requête pour trouver la valeur minimale de chaque concessionnaire, puis joint ces informations à la table originale pour collecter les données complètes de la ligne. La solution 2, en revanche, utilise une jointure gauche optimisée pour éliminer toutes les lignes avec des valeurs plus élevées pour le même concessionnaire, renvoyant ainsi uniquement celles avec les valeurs les plus basses.
MySQL fournit une section dédiée dans sa documentation à cet effet. Scénario fréquemment rencontré, intitulé « Lignes contenant le maximum/minimum par groupe d'une certaine colonne ». Reportez-vous à cette documentation pour plus de détails et d'exemples.
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!