2009-02-03 78 views
1

我有一箇舊的MySQL表稱爲lnk_lists_addresseslist_idaddress_id。我想編寫一個查詢,報告所有同一個list_id - address_id - address_id組合在表中出現的次數不止一次的情況。MySQL查詢只返回重複的項目與計數

我想這...

SELECT count(*), list_id, address_id 
FROM lnk_lists_addresses 
GROUP BY list_id, address_id 
ORDER BY count(*) DESC 
LIMIT 20 

它的工作原理,排序的,因爲有不到20個重複。但是,我將如何返回只有大於1的計數?

我試着在GROUP BY之前和之後添加「WHERE count(*) > 1」,但有錯誤表示聲明無效。

回答

8
SELECT count(*), list_id, address_id 
FROM lnk_lists_addresses 
GROUP BY list_id, address_id 
HAVING count(*)>1 
ORDER BY count(*) DESC 

結合我的和Todd.Run的答案爲一個更「完整」的答案。你想使用HAVING子句:

http://dev.mysql.com/doc/refman/5.1/en/select.html

1
SELECT count(*) AS total, list_id, address_id 
FROM lnk_lists_addresses 
WHERE total > 1 
GROUP BY list_id, address_id 
ORDER BY total DESC 
LIMIT 20 

如果命名COUNT()字段,可以在後面的語句中使用它。

編輯:忘了HAVING(> _ <)