繁体   English   中英

在 MySQL 查询中一起使用 DISTINCT 和 COUNT

[英]Using DISTINCT and COUNT together in a MySQL Query

这样的事情可能吗:

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

我想要的是获取与关键字关联的唯一产品 ID 的数量。 同一产品可能与一个关键字相关联两次或更多次,但我希望每个产品 ID 只计算 1 次

采用

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

我会做这样的事情:

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

那会给你一个清单

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

这使您可以查看每个不同的 productid ID 中有多少与关键字相关联。

你很接近:-)

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

仅供参考,这可能更快,

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

比这个,

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

所有这些工作到底是什么花药

太简单了

如果您想在此处列出每个关键字中有多少 productId,它就是代码

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

选择不同的产品和每个产品的展示数量

对于此类问题的另一个答案,这是我使用 distinct 根据产品名称获取产品数量的方法。 这是一个示例:

产品清单SQLFiddle ):

 select * FROM Product

使用 Distinct ( SQLFiddle ) 的产品名称计数:

 SELECT DISTINCT(Product_Name), (SELECT COUNT(Product_Name) from Product WHERE Product_Name = Prod.Product_Name) as `Product_Count` from Product as Prod

没有 Distinct 的优化版本

 SELECT Product_Name, COUNT(Product_Name) AS `Product_Count` FROM Product GROUP BY Product_Name

分组不是更好吗? 就像是:

SELECT COUNT(*) FROM t1 GROUP BY keywork;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM