首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中使用Distinct、Count和Group

在MySQL中使用Distinct、Count和Group
EN

Stack Overflow用户
提问于 2016-03-07 10:42:15
回答 1查看 1.4K关注 0票数 1

我有一个“景点”的数据库表,每个景点都有县和/或市的列。我需要按字母顺序显示一个县和市的列表,并列出每个县或市的总记录数。

下面的SQL查询工作正常,但计数只显示了每一个景点的总数,而不是每个县或城市的景点总数。

有人能告诉我如何将下面的两个SQL语句组合在一起吗?

SQL:

代码语言:javascript
复制
   SELECT entry, COUNT(entry) AS totalForEntry 
   FROM ( SELECT DISTINCT county AS entry
          FROM venues 
          WHERE (county  IS NOT NULL AND county <> '' ) 

          UNION ALL 

          SELECT DISTINCT city as entry
          FROM venues
          WHERE (city IS NOT NULL 
                 AND
                 city  <> ''  
                 )
      ) X GROUP BY entry ORDER BY entry ASC

结果:

代码语言:javascript
复制
Hove (1)
Inverness-shire (1)
Isle of Man (1)
Kent (1)
Lancashire (1)
Leeds (1)
Leicester (1)
Leicestershire (2)
Lincolnshire (1)
Liverpool (1)

用于计算县数,我也需要它来统计城市,并将其与上面的查询相结合:

代码语言:javascript
复制
SELECT DISTINCT county, COUNT(county) AS Count
FROM venues
WHERE (county IS NOT NULL AND county <> '') 
GROUP BY county ORDER BY county ASC

正确的结果应该是:

代码语言:javascript
复制
Hove (7)
Inverness-shire (3)
Isle of Man (12)
Kent (20)
Lancashire (34)
Leeds (31)
Leicester (5)
Leicestershire (53)
Lincolnshire (7)
Liverpool (43)

在此之前,非常感谢您。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-07 11:25:40

DISTINCTGROUP BY结合使用是没有意义的。你可以:

代码语言:javascript
复制
SELECT county AS entry, COUNT(county) AS Count
FROM venues
WHERE (county IS NOT NULL AND county <> '') 
GROUP BY county 

UNION ALL 

SELECT city as entry, COUNT(city) As Count
FROM venues
WHERE (city IS NOT NULL AND city  <> '')
GROUP BY city 
ORDER BY entry ASC
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35841648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档