在MySQL查询中同时使用DISTINCT和COUNT
这样的事情是否可能:在MySQL查询中同时使用DISTINCT和COUNT,mysql,sql,Mysql,Sql,这样的事情是否可能: SELECT DISTINCT COUNT(productId) WHERE keyword='$keyword' 我想要的是获得与关键字关联的唯一产品ID的数量。同一个产品可能与一个关键字关联两次或两次以上,但我希望每个产品ID只计算一次您很接近:- select count(distinct productId) from table_name where keyword='$keyword' 使用 有一个小组不是更好吗? 比如: SELECT COUNT(*) F
SELECT DISTINCT COUNT(productId) WHERE keyword='$keyword'
我想要的是获得与关键字关联的唯一产品ID的数量。同一个产品可能与一个关键字关联两次或两次以上,但我希望每个产品ID只计算一次您很接近:-
select count(distinct productId) from table_name where keyword='$keyword'
使用
有一个小组不是更好吗? 比如:
SELECT COUNT(*) FROM t1 GROUP BY keywork;
我会这样做:
Select count(*), productid
from products
where keyword = '$keyword'
group by productid
这会给你一个类似的列表
count(*) productid
----------------------
5 12345
3 93884
9 93493
这允许您查看每个不同的productid中有多少与关键字关联。FYI,这可能更快
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;
选择不同的产品并显示每个产品的计数
对于这类问题的另一个答案,这是我的另一个答案,用于根据产品名称获得产品计数,如下示例所示:
记录数:4;执行时间:2ms
他想要不同productID的编号。您的查询返回每个关键字的行数。感谢您的评论,这不是对他确切问题的最纯粹的回答,但可能是他在寻找什么,而且无论如何都很有用。不确定这是否更快,但使用不同关键字计算多个列的方法非常棒。他的回答至少比我快100倍。为了理解@Alistair的代码,有一个小小的改动,就是从SELECT distinct productId中选择count*,其中keyword='$keyword'更新了答案,因为它即将成为一个很好的答案,而且在语法上是不正确的。我反对在数据库方面不能提供最佳性能的答案。保持绩效标准至关重要。我同意@alistair hart的答案。在寻找其他东西时偶然发现了这一点,并学到了一些东西。我总是使用表_name中的SELECT COUNTDISTINCTproductId执行此操作,其中关键字=“$keyword”。我更喜欢你的版本通过两个参数进行计数。令我惊讶的是,我发现计数和左括号之间不能有空格-至少在MariaDB的版本10.1.41中是这样。更新了答案,因为它接近成为一个好答案,并且语法不正确。
SELECT count(productId), keyword FROM `Table_name` GROUP BY keyword;
select * FROM Product
SELECT DISTINCT(Product_Name),
(SELECT COUNT(Product_Name)
from Product WHERE Product_Name = Prod.Product_Name)
as `Product_Count`
from Product as Prod