当前位置: 首页 > news >正文

MySQL数据库07:分组查询与分类查询

文章目录

一、分组查询

1.1简介

1.2操作

1.3分组的条件筛选having

二、分页查询

2.1简介

2.2操作

三、INSERT INTO SELECT语句

3.1简介

3.2操作


一、分组查询

1.1简介

        分组查询是指使用group by字句对查询信息进行分组。

格式:

        select 字段1,字段2... from 表名 group by 分组字段 having 分组条件;

1.2操作

-- 1 统计各个分类商品的个数
select category_id ,count(*)from product group by category_id ;

        这里代码的意思就是我们将表product中的数据根据category_id分组,然后用count计算每个组中的元素个数,count中既可以是*也可以是pid,都用于计数,就相当于将product根据category_id这个条件分成几个小表,再对每个小表进行计数。

        另外,gruop by之后也可以跟多个参数,只有同时满足这几个参数,才会归为一组。

        如果要进行分组的话,则SELECT子句之后,只能出现分组的字段和统计函数,其他的字段不能出现。

1.3分组的条件筛选having

  • 分组之后对统计结果进行筛选的话必须使用having,不能使用where
  • where子句用来筛选 FROM 子句中指定的操作所产生的行
  • group by 子句用来分组 WHERE 子句的输出
  • having 子句用来从分组的结果中筛选行

        格式:select 字段1 ,字段2..from 表名 group 分组字段 having 分组条件;

-- 2.统计各个分类商品的个数,且只显示个数大于4的信息count(*)>4;
select category_id,count(*) from product group by category_id having count(*) > 4;

        我们还可以使用order by将分类后的数据进行排序,代码如下:

selectcategory_id,count(pid) cnt
fromproduct
group bycategory_id
havingcnt > 4
order bycnt;

        SQL代码的执行顺序为:from->group by -> count(pid) - > select -> having -> order by,我们先from找到是对哪一个表进行操作,接着group by将表拆成多个临时子表进行分组,然后count(pid)进行统计个数,接着select进行筛选,筛选成一个新的表,再用having进行条件筛选,最后用order by按照cnt进行排序。

二、分页查询

2.1简介

        分页查询在项目开发中常见,由于数据量很大,显示屏长度有限,因此对数据需要采取分页显示方式。例如数据有30条,每页显示5条,第一页显示1-5条,第二页显示6-10条。

格式:

        -- 方式1-显示前n条

        select 字段1,字段2... from 表名 limit n;

        -- 方式2分页显示

        select 字段1,字段2... from 表名 limit m,n;

m:整数,表示从第几条索引开始,计算方式(当前页-1)*每页显示条数

n:整数,表示查询多少条数据

2.2操作

-- 查询product表的前5条记录
select * from product limit 5;
-- 从第4条开始显示,显示5条
select * from product limit 3,5;

        记录的条数是从0开始记录的,所以第1条信息是从0开始的,从第4条开始显示,显示5条,就写成limit 3,5。

三、INSERT INTO SELECT语句

3.1简介

        将一张表的数据导入到另一张表中,可以使用INSERTINTOSELECT语句。

格式:

insert into Table2 (fieldl,field2,.) select valuel,value2... from Table1
或者:
insert into Table2 select * from Table1

        要求目标表Table2必须存在。Table1中的字段和Table2中的字段都要一一对应。

3.2操作

create table product2(pname varchar(20),price double
);insert into product2(pname,price) select pname,price from product;select * from product2;

        这里我们先创建表pruduct2,然后查找表product中的pname和price字段,将这2个字段复制给product2。再查询product2,查看是否复制成功。

create table product3(categroy_id varchar(20),product_count int
);insert into product3 select category_id,count(*) from product group by category_id;select * from product3;

        这里我们创建表product3,这里面存储categroy_id和以categroy_id分组后每组的记录条数,第2条代码调用的顺序为:先from找到表product,然后group by按照categroy_id分组,接着select查询每个分组中的category_id和记录条数count(*),最后insert into将查询到的信息存到product3中。

http://www.dtcms.com/a/593129.html

相关文章:

  • 淄博网站公司高端网站建设公司怎么做推广
  • MCU的I/O防护
  • 碳纤维便携式气象站:轻量化设计,随时随地掌握气象数据
  • 华为-AI智算网络学习-2
  • K8S RD: Kubernetes从核心调度到故障排查、网络优化与日志收集指南
  • Java 项目里的那些坑
  • 【读书笔记】NVIDIA DGX
  • 岑溪网站开发工作室宁波网站制作公司费用价格
  • 揭阳智能模板建站海口百度seo公司
  • 智能SQL优化工具 PawSQL 月度更新 | 2025年10月
  • 烟台市网站建设用电脑怎么做原创视频网站
  • Total PDF Converter v6.5.0.356.0 电脑PDF多功能转换器
  • 【Android】MVVM实战:仿Launcher加载与应用过滤
  • seowhy什么意思丹阳seo公司
  • 质量智能革命:SPC软件助力中国制造驶入高质量发展快车道
  • 步骤记录器广州搜索排名优化
  • 3分钟搞定,CI/CD工具Arbess安装和配置
  • 5G智慧矿山监控终端:引领矿山智能化新潮流 在科技浪潮汹涌澎湃的当下,矿山行业正处于智能化转型的关键转折点
  • oracle 11查询数据库锁
  • 网站后台模板免费海外网站服务器网址
  • Oracle dblink 连接TDSQL-PG,及乱码处理
  • [出现错误 2147942402 (0x80070002) (启动“ubuntu2004.exe”时)]
  • jdbc基础(工具类)
  • 生物电子实验箱 生物医学教学平台 嵌入式生物医学电子实验箱 医疗电子试验箱
  • 长沙做网站微联讯点很好wordpress百度云直链
  • YOLOv5(四):models/experimental.py
  • TCP/IP协议:互联网的基石与通信灵魂
  • 进程间消息通信RegisterWindowMessage(C++源码)
  • Redis进阶 - 数据结构底层机制
  • 基于YOLO11深度学习的电动车头盔检测系统【Python源码+Pyqt5界面+数据集+安装使用教程+训练代码】【附下载链接】