mysql怎么查询并统计数量


在mysql中,可以使用SELECT语句查询数据,并利用COUNT()函数统计查询结果的数量,语法“SELECT COUNT(*) FROM 表名 [...];”或“SELECT COUNT(字段名) FROM 表名 [...];”。

mysql怎么查询并统计数量

本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。

在mysql中,可以使用SELECT语句查询数据,并利用COUNT()函数统计查询结果的数量。

SELECT 的语法格式如下:

SELECT
{* | <字段列名>}
[
FROM <表 1>, <表 2>…
[WHERE <表达式>
[GROUP BY <group by definition>
[H*ING <expression> [{<operator> <expression>}…]]
[ORDER BY <order by definition>]
[LIMIT[<offset>,] <row count>]
]

其中,各条子句的含义如下:

  • {*|}包含星号通配符的字段列表,表示所要查询字段的名称。

  • ,…,表 1 和表 2 表示查询数据的来源,可以是单个或多个。

  • WHERE 是可选项,如果选择该项,将限定查询数据必须满足该查询条件。

  • GROUP BY,该子句告诉 MySQL 如何显示查询出来的数据,并按照指定的字段分组。

  • [ORDER BY],该子句告诉 MySQL 按什么样的顺序显示查询出来的数据,可以进行的排序有升序(ASC)和降序(DESC),默认情况下是升序。

  • [LIMIT[<offset>,]<row count>]</row></offset>,该子句告诉 MySQL 每次显示查询出来的数据条数。

COUNT() 函数统计数据表中包含的记录行的总数,或者根据查询结果返回列中包含的数据行数

  • COUNT(*) 计算表中总的行数,无论某列有数值或者为空值。

  • COUNT(表达式) 计算不包含NULL值的行数。

  • COUNT(DISTINCT 表达式) 返回不包含NULL值的唯一行数

COUNT()函数的返回类型为BIGINT。 如果没有找到匹配的行,则COUNT()函数返回0

MySQL COUNT示例

我们来创建一个名为demo的新表,并插入一些示例数据。

USE testdb;
-- create a demos table
CREATE TABLE IF NOT EXISTS demos(
 id int auto_increment primary key,
 val int 
);
-- insert some sample data
INSERT INTO demos(val)
VALUES(1),(1),(2),(2),(NULL),(3),(4),(NULL),(5);
-- select data from demos table
SELECT * FROM demos;

执行上面查询语句,得到以下结果 -

+----+------+
| id | val  |
+----+------+
|  1 |    1 |
|  2 |    1 |
|  3 |    2 |
|  4 |    2 |
|  5 | NULL |
|  6 |    3 |
|  7 |    4 |
|  8 | NULL |
|  9 |    5 |
+----+------+
9 rows in set

要计算demos表中的所有行,请使用COUNT(*)函数,如下所示:

mysql> SELECT COUNT(*) FROM demos;
+----------+
| COUNT(*) |
+----------+
|        9 |
+----------+
1 row in set

您可以添加一个WHERE子句来指定一个条件来计数,例如,只计算val列包含值等于2的行,使用以下查询:

SONIFY.io SONIFY.io

设计和开发音频优先的产品和数据驱动的解决方案

SONIFY.io 83 查看详情 SONIFY.io
mysql> SELECT COUNT(*) FROM demos WHERE val = 2;
+----------+
| COUNT(*) |
+----------+
|        2 |
+----------+
1 row in set

如果在COUNT函数中指定val列,则COUNT函数计数其val列仅包含非NULL值的所有行。 请参阅以下查询:

SELECT COUNT(*) FROM demos WHERE val = 2;

val列中的两个NULL值将被忽略。

要计算demos表中的唯一行,可以将DISTINCT运算符添加到COUNT函数中,如下查询语句:

SELECT COUNT(DISTINCT val) FROM demos;

执行上面查询语句,得到以下结果 -

mysql> SELECT COUNT(DISTINCT val) FROM demos;
+---------------------+
| COUNT(DISTINCT val) |
+---------------------+
|                   5 |
+---------------------+
1 row in set

在计数中忽略两个重复值1,2和两个NULL值。

具有GROUP BY的MySQL COUNT

我们经常将COUNT函数与GROUP BY子句结合使用来统计不同分组中的数据。请参见以下products表的结构 -

mysql> desc products;
+--------------------+---------------+------+-----+---------+------------------+
| Field              | Type          | Null | Key | Default | Extra            |
+--------------------+---------------+------+-----+---------+------------------+
| productCode        | varchar(15)   | NO   | PRI |         |                  |
| productName        | varchar(70)   | NO   | MUL | NULL    |                  |
| productLine        | varchar(50)   | NO   | MUL | NULL    |                  |
| productScale       | varchar(10)   | NO   |     | NULL    |                  |
| productVendor      | varchar(50)   | NO   |     | NULL    |                  |
| productDescription | text          | NO   |     | NULL    |                  |
| quantityInStock    | smallint(6)   | NO   |     | NULL    |                  |
| buyPrice           | decimal(10,2) | NO   |     | NULL    |                  |
| MSRP               | decimal(10,2) | NO   |     | NULL    |                  |
| stockValue         | double        | YES  |     | NULL    | STORED GENERATED |
+--------------------+---------------+------+-----+---------+------------------+
10 rows in set

例如,要查找每个产品系列中的产品数量,可以使用COUNT函数与GROUP BY子句,如下查询所示:

SELECT productline, count(*) FROM products GROUP BY productline;

执行上面代码,得到以下结果 -

mysql> SELECT productline, count(*) FROM products GROUP BY productline;
+------------------+----------+
| productline      | count(*) |
+------------------+----------+
| Classic Cars     |       38 |
| Motorcycles      |       13 |
| Planes           |       12 |
| Ships            |        9 |
| Trains           |        3 |
| Trucks and Buses |       11 |
| Vintage Cars     |       24 |
+------------------+----------+
7 rows in set

要查找供应商提供的产品数量,请使用以下查询:

SELECT productvendor, count(*) FROM products GROUP BY productvendor;

执行上面代码,得到以下结果 -

mysql> SELECT productvendor, count(*) FROM products GROUP BY productvendor;
+---------------------------+----------+
| productvendor             | count(*) |
+---------------------------+----------+
| Autoart Studio Design     |        8 |
| Carousel DieCast Legends  |        9 |
| Classic Metal Creations   |       10 |
| Exoto Designs             |        9 |
| Gearbox Collectibles      |        9 |
| Highway 66 Mini Classics  |        9 |
| Min Lin Diecast           |        8 |
| Motor City Art Classics   |        9 |
| Red Start Diecast         |        7 |
| Second Gear Diecast       |        8 |
| Studio M Art Models       |        8 |
| Unimax Art Galleries      |        8 |
| Welly Diecast Productions |        8 |
+---------------------------+----------+
13 rows in set

要查找哪个供应商提供至少9个产品,您可以使用H*ING子句在COUNT函数中,如以下查询语句所示:

SELECT productvendor, count(*) FROM products GROUP BY productvendor
H*ING count(*) >= 9;

执行上面代码,得到以下结果 -

mysql> SELECT productvendor, count(*) FROM products GROUP BY productvendor
H*ING count(*) >= 9;
+--------------------------+----------+
| productvendor            | count(*) |
+--------------------------+----------+
| Carousel DieCast Legends |        9 |
| Classic Metal Creations  |       10 |
| Exoto Designs            |        9 |
| Gearbox Collectibles     |        9 |
| Highway 66 Mini Classics |        9 |
| Motor City Art Classics  |        9 |
+--------------------------+----------+
6 rows in set

MySQL COUNT IF

可以使用COUNT函数中的控制流程功能,例如IFIFNULLCASE等来计数其值与条件匹配的行。

例如,以下查询可以查找有多少被取消,暂停和有争议的订单:

SELECT COUNT(IF(status='Cancelled',1, NULL)) 'Cancelled',
       COUNT(IF(status='On Hold',1, NULL)) 'On Hold',
       COUNT(IF(status='Disputed',1, NULL)) 'Disputed'
FROM orders;

执行上面代码,得到以下结果 -

mysql> SELECT COUNT(IF(status='Cancelled',1, NULL)) 'Cancelled',
       COUNT(IF(status='On Hold',1, NULL)) 'On Hold',
       COUNT(IF(status='Disputed',1, NULL)) 'Disputed'
FROM orders;
+-----------+---------+----------+
| Cancelled | On Hold | Disputed |
+-----------+---------+----------+
|         6 |       4 |        3 |
+-----------+---------+----------+
1 row in set

如果订单的状态被取消,保留或有争议,IF函数将返回1,否则返回NULLCOUNT函数只计数1,而不是NULL值,因此查询根据相应的状态返回订单数。

【相关推荐:mysql视频教程】

以上就是mysql怎么查询并统计数量的详细内容,更多请关注其它相关文章!


# 请使用  # 惠州企业seo投放  # 抖音来客没有营销推广  # 抖音seo费用如何计算  # 广告 模型网站推广方案  # 肇庆网站建设推广有哪些  # seo品牌营销方案  # 青海seo营销的好方法  # 杭州企业网站建设好公司  # 义乌营销推广定制招聘  # 济阳租房网站建设  # 产品数量  # mysql  # 您可以  # 查询结果  # 升序  # 行数  # 所示  # 可以使用  # 镜像  # 子句  # 统计  # 查询 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 如何外贸网站设计-能留住客户提升用户体验!  如何在CSS中设置背景图像:一个全面指南  Selenium自动化:利用键盘模拟解决复杂日期输入框输入问题  todesk如何添加信任设备_todesk信任设备设置教程  J*aScript实现网页表单实时输入字段比较与验证教程  《三国:谋定天下》平民全阶段通用阵容  《东方航空》添加乘机人方法  mysql导入sql文件能分批导入吗_mysql分批次导入大sql文件的实用技巧  ExcelSCAN与LAMBDA如何创建自定义移动平均函数_SCAN实现任意窗口期移动平均计算  研招网官方网站正版登录网址_中国研究生招生信息网官网首页  RxJS中如何高效地在一个函数内处理和合并多个数据集合  VS Code中的Tailwind CSS IntelliSense插件使用技巧  《伊瑟》凶影追缉库卢鲁boss攻略  Lar*el Eloquent:高效删除多对多关系中无关联子记录的父模型  win11讲述人怎么关闭 Win11屏幕朗读辅助功能禁用方法【技巧】  c++如何链接Boost库_c++准标准库的集成与使用  Pandas中基于动态偏移量实现DataFrame列值位移的策略  VS Code快捷键when上下文子句的妙用  从HTML表单获取逗号分隔值并转换为NumPy数组进行预测  iphone16系列配置参数介绍  sublime text 4如何安装_最新版sublime下载与汉化教程  MongoDB聚合管道:高效统计列表中各项的文档数量  天天漫画2025最新入口 天天漫画永久有效登录入口  Dagster资产间数据传递与用户配置管理教程  掌握Go App Engine项目结构与GOPATH:包管理与导入实践  深入理解J*aScript异步操作:setTimeout与调用栈的真相  Leaflet地图弹出窗口图片动态显示:避免缺失图标的专业指南  口腔诊所管理软件推荐  晓晓优选app支付宝绑定方法  我的世界官方网址入口 我的世界游戏主页直达入口  PHP动态导航按钮:根据用户登录状态切换链接与文本  抖音赚钱快速入门_新手必看的抖音赚钱步骤  纯CSS实现滚动时动态时间轴线条颜色填充效果  Linux如何优化系统启动流程_Linux启动项优化方案  192.168.1.1路由器后台入口 192.168.1.1默认登录入口  C++如何使用CMake构建项目_C++ CMakeLists.txt编写入门教程  《雷电模拟器》截图方法介绍  VS Code的时间线(Timeline)视图:您的代码时光机  126邮箱申请入口官网_126邮箱注册免费登录2025  解决PHP MySQL数据库更新无响应:SQL查询语法错误解析  Lar*el Socialite单设备登录策略:实现用户唯一会话管理  汽水音乐官方网站登录入口_汽水音乐网页版进入链接  手机远程连接电脑方法  怎样设置开机后自动运行某个程序_Windows启动文件夹与任务计划【自动化】  漫蛙官网(首页入口)_漫蛙漫画稳定访问教程分享  J*aScript二进制处理_ArrayBuffer与Blob  国际经济与贸易就业方向解析  Bootstrap 5导航栏折叠功能失效:数据属性迁移指南  申通快件单号查询平台 申通包裹物流动态跟踪  《长生:天机降世》火塔小怪大全 

 2021-12-07

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.