2013-01-11 137 views
0

我有附加列的以下表格。按COUNT排序的SQL

tags 
-t_id (PRIMARY) 
-pg 
tag_refs 
-t_id 
-bp_id 

現在我想寫一個MySQL查詢返回的命令標籤的他們是多麼受歡迎總數 - 這,在這種情況下,意味着獨特T_ID多少次在tag_refs表表示。

我假設這是一個連接的查詢,它必須從標籤表中返回一個列表,我可以使用pg列輸出每個標籤的名稱/標題一次,最常用的順序是排序。

我試過以下查詢,它只返回一行,但似乎按照我的意願進行排序。

SELECT * 
FROM tags 
JOIN tag_refs ON tags.t_id = tag_refs.t_id 
ORDER BY COUNT(tag_refs.t_id) DESC 

回答

3

你應該做你聚集在SELECT這樣的:在

SELECT tags.pg, COUNT(tag_refs.t_id) AS tag_count 
FROM tags INNER JOIN tag_refs ON tags.t_id = tag_refs.t_id 
GROUP BY tag.pg 
ORDER BY tag_count DESC 
+0

優秀!這像一個魅力。謝謝! –

2

你錯過了Group by條款

SELECT 
tag_refs.t_id, COUNT(tag_refs.t_id) 
FROM 
    tags 
JOIN 
    tag_refs 
ON 
    tags.t_id = tag_refs.t_id 
group by tag_refs.t_id 
ORDER BY 
    COUNT(tag_refs.t_id) 
DESC 

閱讀一些關於這個條款here

+0

現貨。謝謝! –