2009-06-16 91 views
99

COUNT一起這樣的事情可能:使用DISTINCT,並在MySQL查詢

SELECT DISTINCT COUNT(productId) WHERE keyword='$keyword' 

我想要的是讓它們與關鍵詞相關的唯一產品ID的數量。相同的產品可以兩次與關鍵字相關聯,或者更多,但我想只有1次每產品ID

回答

221

使用要被計數

SELECT COUNT(DISTINCT productId) from table_name WHERE keyword='$keyword' 
+0

更新了答案,因爲它接近於成爲一個很好的答案,它在語法上不正確。 – 2014-09-08 10:20:03

+0

Im針對數據庫時不提供最佳性能的答案。保持性能標準至關重要。我會和@ alistair-hart的回答一起去。 – JDuarteDJ 2015-01-20 15:45:38

+0

偉大的人。它的工作原理 – 2015-05-12 05:45:54

30

你接近:-)

select count(distinct productId) from table_name where keyword='$keyword' 
+0

更新了答案,因爲它接近成爲一個很好的答案,它在語法上不正確。 – 2014-09-08 10:20:44

+0

低性能 – JDuarteDJ 2015-01-20 15:46:01

-4

對一羣人來說不是更好嗎? 喜歡的東西:

SELECT COUNT(*) FROM t1 GROUP BY keywork; 
+1

他希望不同的productID的數量。您的查詢返回每個關鍵字的行數。 – David 2009-06-16 15:58:39

41

我會做這樣的事情:

Select count(*), productid 
from products 
where keyword = '$keyword' 
group by productid 

,這將使你喜歡

count(*) productid 
---------------------- 
5   12345 
3   93884 
9   93493  

這可以讓你看到有多少每個不同的ProductID列表ID與關鍵字相關聯。

14

僅供參考,這可能是更快,

SELECT count(1) FROM (SELECT distinct productId WHERE keyword = '$keyword') temp 

莫過於此,

SELECT COUNT(DISTINCT productId) WHERE keyword='$keyword' 
5

這些著作花葯的地獄

它太簡單

如果你需要列出每個鍵中有多少productId這裏的代碼是代碼

SELECT count(productId), keyword FROM `Table_name` GROUP BY keyword;