Comment écrire ce MySQL Query?
Question
Supposons que j'ai une table qui comporte trois champs d'entiers et un champ de chaîne (seulement des données).
Par exemple, il ressemble à:
Id Category Value Data
1 1 3 ...
2 1 4 ...
3 2 2 ...
4 2 4 ...
5 3 5 ...
6 3 6 ...
7 3 2 ...
8 4 1 ...
Ce que je veux faire est pour chaque Category
, inclure la ligne avec le champ Value
minimum dans le jeu de résultats. Dans ce cas, il retournerait:
Id Category Value Data
1 1 3 ...
3 2 2 ...
7 3 2 ...
8 4 1 ...
Comment écrire une telle requête?
Merci!
La solution
select T1.Id,
T1.Category,
T1.Value,
T1.Data
from YourTable as T1
inner join (
select Category,
min(Value) as Value
from YourTable
group by Category
) as T2
on T1.Category = T2.Category and
T1.Value = T2.Value
Autres conseils
select *
from mytable t
join (select category, min(value) as value from mytable group by 1) x
on t.value = x.value and t.category = x.category
La sélection intérieure obtient les catégories et les valeurs nécessaires pour le résultat final, vous joindre à la table principale pour obtenir tous les colonnes.
SELECT category, MIN(value) as Value
FROM table
GROUP BY category
Utilisez la fonction MIN
et GROUP BY
les résultats sur la colonne Catégorie.
SELECT id,category,value,date
FROM table_name
WHERE category = (select distinct category from table_name)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow