2011-03-26 3 views
0

J'ai une table qui est aménagé comme suit:SQL Count Distinct?

id - tag_id - post_id 
1 - 1 - 3 
2 - 1 - 6 
3 - 1 - 2 
4 - 2 - 3 
5 - 2 - 9 
6 - 1 - 7 

Je voudrais écrire une déclaration mySQL qui découvre combien de fois un tag est référencé. J'utiliserais alors PHP pour formater les résultats. tag # was referenced # times et ils seraient triés dans l'ordre de # times.

Ma capacité avec MySQL est limitée aux instructions SELECT, INSERT, UPDATE et DELETE très basiques, donc je ne suis pas sûr de la façon de procéder. Pouvez-vous aider?

Répondre

4
select tag_id, count(*) 
from mytable 
group by tag_id 
order by count(*) desc 

Cela va ordonner vos résultats par nombre (*) dans l'ordre décroissant, ce qui signifie que les étiquettes avec la plupart des messages apparaîtront sur les lignes supérieures.

2

SELECT tag_id, COUNT(*) FROM table GROUP BY tag_id vous donnera un compte de chaque id tag

1

Pour obtenir les balises et le nombre de messages chaque balise a, triées par ordre décroissant, vous pouvez utiliser la requête suivante:

select tag_id, count(*) as num 
from your_table 
group by tag_id 
order by count(*) desc 

(Bien sûr, si vous voulez que les mêmes données, mais triées dans l'ordre croissant, il suffit de retirer la desc dans la clause order by)