我之前被问过这个问题,一直无法回答这个问题一直困扰着我..
假设我们有一张包含客户及其居住城市的表格。
如果我想查询城市的唯一数量,以及每个城市出现的次数,该怎么办。
更清楚一点:
Toronto
Toronto
Toronto
Oshawa
Oshawa
Distinct cities: 2
Toronto: 3
Oshawa: 2
答案可能很简单,我现在脑子里一片糊涂!
最佳答案
这将为每个城市返回一行,其中包含城市名称和城市出现的次数:
SELECT
city,
COUNT(*)
FROM clients
GROUP BY city
城市总数就是查询返回的行数。如果你真的想让它出现在记录集上,我可以想到两种方法(我都不是特别喜欢)。
UNION 查询:
SELECT 'CITIES' as city, COUNT(DISTINCT city) FROM clients UNION SELECT city, COUNT(*) FROM clients GROUP BY city
SELECT
子句的子查询:SELECT (SELECT COUNT(DISTINCT city)) AS all, city, COUNT(*) FROM clients GROUP BY city
关于mysql 使用 count 和 distinct count,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9470897/