Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL查询中同时使用DISTINCT和COUNT_Mysql_Sql - Fatal编程技术网

在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