mysql – 涉及count的非常基本的SQL查询
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 涉及count的非常基本的SQL查询,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1668字,纯文字阅读大概需要3分钟。
内容图文
![mysql – 涉及count的非常基本的SQL查询](/upload/InfoBanner/zyjiaocheng/894/bf1216005771448d900c35089fe03b5a.jpg)
假设我有以下架构
Company:
-> company_id
-> company_name
Building_to_company:
-> building_id
-> company_id
因此,每个建筑物都有自己的ID以及与单个公司相关的公司ID.
以下查询提供两列 – 一列用于公司名称,然后是其关联的建筑物.
SELECT company.company_name, building_to_company.building_id
FROM company, building_to_company
WHERE company.company_id = building_to_company.company_id;
返回的表看起来像这样:
Company Name | Building Id
Smith Banking 2001
Smith Banking 0034
Smith Banking 0101
Smith Banking 4055
Reynolds 8191
TradeCo 7119
TradeCo 8510
所以这一切都很简单.
但我需要做一些不同的事情.我需要2列.一个用于公司名称,然后在右侧是它拥有的建筑物数量.然后,为了一点额外的挑战,我只想列出3栋或更少建筑物的公司.
在这一点上,我所做的唯一真正进展是提出上面的查询.我知道如何在building_id列上使用count并计算与每个公司相关的建筑物数量.然后在那时我可以通过使用像WHERE x< 4
解决方法:
你基本上已经用语言表达了它.假设company_name是唯一的,那么您必须添加到解释中才能使其工作的是GROUP BY子句:
SELECT company.company_name, COUNT(building_to_company.building_id)
FROM company
INNER JOIN building_to_company
ON company.company_id = building_to_company.company_id
GROUP BY company.company_name
(SQL Fiddle demo of this query in action)
要将它限制在3栋或更少建筑物的公司,关键是您必须使用HAVING子句而不是WHERE.这是因为你想根据聚合的结果(COUNT)进行过滤;简单地说,WHERE过滤器在聚合和HAVING之前出现:
SELECT company.company_name, COUNT(building_to_company.building_id)
FROM company
INNER JOIN building_to_company
ON company.company_id = building_to_company.company_id
GROUP BY company.company_name
HAVING COUNT(building_to_company.building_id) < 4
(SQL Fiddle demo of this query in action)
内容总结
以上是互联网集市为您收集整理的mysql – 涉及count的非常基本的SQL查询全部内容,希望文章能够帮你解决mysql – 涉及count的非常基本的SQL查询所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。