Mysql,在显示另一个冒号的同时,仅使用一个冒号创建一个不同的冒号

Mysql,在显示另一个冒号的同时,仅使用一个冒号创建一个不同的冒号,mysql,count,distinct,Mysql,Count,Distinct,我有一张这样的桌子: ID USER PRODUCT 1 user1 product1 2 user2 product2 3 user2 product2 4 user3 product3 PRODUCT count product1 1 product2 1 product3 1 我想统计有多少不同的用户购买了每种产品 我期待这样的事情: ID USER PRODUCT 1 user1 product1 2 user2 product2 3 user2 product2 4 user

我有一张这样的桌子:

ID USER PRODUCT
1 user1 product1
2 user2 product2
3 user2 product2
4 user3 product3
PRODUCT count
product1  1
product2  1
product3  1
我想统计有多少不同的用户购买了每种产品

我期待这样的事情:

ID USER PRODUCT
1 user1 product1
2 user2 product2
3 user2 product2
4 user3 product3
PRODUCT count
product1  1
product2  1
product3  1
我有很多类似的事情,但没有达到我预期的结果

SELECT DISTINCT PRODUCT, COUNT(ID) as count FROM `test`
group by USER
(以下代码提供了此结果:

PRODUCT count
site1     1
site2     2
site3     1
第二条直线应该是1,而不是2。 有什么建议吗?
谢谢

您想进行不同的计数:

SELECT PRODUCT, COUNT(DISTINCT USER) AS count
FROM test
GROUP BY PRODUCT;
您当前的查询正在使用
SELECT DISTINCT
,它将尝试将DISTINCT应用于所选的所有内容。但是,您只希望将其应用于用户计数

尝试以下方法:

SELECT product, COUNT(DISTINCT user) 
FROM table 
WHERE 1 = 1
GROUP BY product
见: