广告
返回顶部
首页 > 资讯 > 数据库 >mysql如何查询并统计数量
  • 348
分享到

mysql如何查询并统计数量

2024-04-02 19:04:59 348人浏览 泡泡鱼
摘要

这篇文章主要介绍Mysql如何查询并统计数量,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 在mysql中,可以使用SELECT语句查询数据,并利

这篇文章主要介绍Mysql如何查询并统计数量,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

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

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

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

SELECT 的语法格式如下:

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

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

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

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

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

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

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

  • [LIMIT[<offset>,]<row count>],该子句告诉 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的行,使用以下查询:

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个产品,您可以使用HAVING子句在COUNT函数中,如以下查询语句所示:

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

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

mysql> SELECT productvendor, count(*) FROM products GROUP BY productvendor
HAVING 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如何查询并统计数量”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: mysql如何查询并统计数量

本文链接: https://www.lsjlt.com/news/69590.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mysql如何查询并统计数量
    这篇文章主要介绍mysql如何查询并统计数量,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 在mysql中,可以使用SELECT语句查询数据,并利...
    99+
    2022-10-19
  • Thinkphp统计查询数量
    ThinkPHP是一个开源的PHP开发框架,可以用来快速开发web应用。在ThinkPHP中,可以使用模型类来查询数据库。如果要统计查询数量,可以使用count方法来统计符合条件的记录数。 示例代码: $count = M('tab...
    99+
    2023-09-01
    php 开发语言
  • mysql查询日志计数统计
    分析统计MySQL general日志 找出查询次数最多的SQL当我们需要优化MySQL查询时,第一想到的是开启慢日志,慢日志可以看到执行消耗超过一定时间的SQL语句和未使用索引的SQL。但如果我们想分析所...
    99+
    2022-10-18
  • mysql使用 union all查询统计总数量
    select sum(a.b) as num from (select count() as b from table_1 union all select coun...
    99+
    2022-10-18
  • mySql关于统计数量的SQL查询操作
    我就废话不多说了,大家还是直接看代码吧~ select project_no, sum(case when device_state=0 then 1 else 0 end)as offTotal , ...
    99+
    2022-05-26
    mySql 统计数量 SQL查询
  • 如何统计MySQL查询时间
    本文主要给大家简单讲讲如何统计MySQL查询时间,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望如何统计MySQL查询时间这篇文章可以给大家带来一些实际帮助。...
    99+
    2022-10-18
  • mysql如何统计查询结果
    本篇内容介绍了“mysql如何统计查询结果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
  • mysql如何查询字段数量
    本篇内容介绍了“mysql如何查询字段数量”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
  • mysql如何限制查询数量
    本篇内容主要讲解“mysql如何限制查询数量”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql如何限制查询数量”吧! mysq...
    99+
    2022-10-19
  • mysql如何查询数据库容量
    本篇内容介绍了“mysql如何查询数据库容量”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2023-04-03
    mysql 数据库
  • mysql如何查询表的数据量
    这篇文章主要介绍“mysql如何查询表的数据量”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“mysql如何查询表的数据量”文章能帮助大家解决问题。 ...
    99+
    2022-10-19
  • 分库数据如何查询统计
    分库后的计算不能直接使用SQL;异构库 SQL 函数不尽相同;JAVA 硬编码实施难度大;即使借助透明网关访问远程数据库,分库性能优化也是头疼问题。 一般常规办法: 方法1:java硬编码 简单的跨库count运算,Java部分代码大...
    99+
    2017-06-06
    分库数据如何查询统计
  • mysql如何查询数据并起别名
    这篇文章主要讲解了“mysql如何查询数据并起别名”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql如何查询数据并起别名”吧! ...
    99+
    2022-10-19
  • mysql如何查询后合并
    这篇“mysql如何查询后合并”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“mysql如何查询后合并”,小编整理了以下知识点,请...
    99+
    2022-10-19
  • php如何查询mysql中的数据数量
    本文小编为大家详细介绍“php如何查询mysql中的数据数量”,内容详细,步骤清晰,细节处理妥当,希望这篇“php如何查询mysql中的数据数量”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、连接 MySQL ...
    99+
    2023-07-05
  • MySQL如何合并查询结果
    今天小编给大家分享一下MySQL如何合并查询结果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
    99+
    2023-04-06
    mysql
  • Mysql 查询统计最近12个月的数据
    包括当月: SELECTt1.yf AS 'month',count( t2.uuid ) AS totalFROM(SELECTDATE_FORMAT(( CURDATE()), '%Y-%m' ) AS 'yf' UNI...
    99+
    2023-10-12
    mysql 数据库 sql
  • mysql数据库如何实现连续日期的统计查询
    我们经常会用到按日期汇总某些数据,一般我们使用group by + 统计函数来进行查询,得到的结果如下图所示: 在实际应用场景中,并不是每个时间段都有数据,所以我们汇总出来的结果中,日期是不连续的。...
    99+
    2023-09-03
    mysql
  • php如何查询mysql并返回json
    本篇内容主要讲解“php如何查询mysql并返回json”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何查询mysql并返回json”吧!php查询mysql并返回json的方法:首先创...
    99+
    2023-06-20
  • mysql如何实现查询并排序
    本篇内容主要讲解“mysql如何实现查询并排序”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql如何实现查询并排序”吧! 在m...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作