【MYSQL】聚合查询、分组查询、联合查询

news2024/12/23 1:55:23

目录

  • 聚合查询
    • 聚合函数
      • count()
      • sum()
      • avg()
      • max()和min()
      • 总结
  • 分组查询
    • group by 子句
    • having 子句
  • 联合查询
    • 笛卡尔积
    • 内连接
    • 外连接
    • 自连接
    • 子查询
      • 单行子查询
      • 多行子查询
      • from子句使用子查询
  • 合并查询

聚合查询

聚合查询就是针对表中行与行之间的查询。

聚合函数

count()

count(列名):查询当前列下面有多少条数据。

select count(*) from 表名;#查询当前表有多少行
select count(列名) from 表名;#查询该列有多少行
  • count(1),里面加个数字常量也可以达到count(*)的效果,推荐写count(*)。
  • 使用count(列名)查询到null时不算入行数。

sum()

把查询到的结果相加。

select sum(列名) from 表名;#将该列所有值相加
  • 必须是数字,不是数字会报警告没结果。
  • 使用该函数会将null不计算,不会出现加上null和为null的结果。

avg()

求查询到结果的平均值。

select avg(列名/表达式) from 表名;#将该列所有值的平均数
  • 必须是数字,不是数字会报警告没结果。
  • 使用该函数会将null那行不计算,比如1,2,null平均值为(1 + 2)/ 2 = 1.5000。

max()和min()

分别返回查到的最大值和最小值。

select max(列名) from 表名;#返回该列最大值
select min(列名) from 表名;#返回该列最小值
  • 必须是数字,不是数字会报警告没结果。
  • null不参与。

总结

函数说明
count (列名)返回查询到的数据的 数量
sum(列名)返回查询到的数据的 总和,不是数字没有意义
avg(列名)返回查询到的数据的 平均值,不是数字没有意义
max(列名)返回查询到的数据的 最大值,不是数字没有意义
min(列名)返回查询到的数据的 最小值,不是数字没有意义

分组查询

group by 子句

查询(select) 中使用 group by子句可以对指定列进行分组查询。
功能就是将查询到的结果中 group by 子句后的列完全相同的合并在一起。

select 列名.... from 表名 group by 列名1, 列名2;


group by 子句后也可以跟 order by子句排序。

having 子句

group by 子句进行分组以后,需要对分组结果再进行条件过滤时,不能使用 where语句,而需要用having。
因为分组结果在结果集中是临时表,不是真是的数据,where处理的事是真实数据。

select 列名.... from 表名 group by 列名1, 列名2 having 条件;

联合查询

联合查询就是将多张表联合起来查询,将需要的信息一起取出来。

笛卡尔积

笛卡尔积就是将表中每行与其他表的行进行全排列。

select .... from1,2;

例如:

  • 当使用笛卡尔积的表含有主外键查询时,因为是全排列,必然会产生无效数据,我们就可以使用条件查询,但是必须要使用 表名.列名。

  • 通过指定列查询精简结果集时也需要使用 表名.列名。

  • 可以通过给表名起别名来精简SQL语句。

内连接

两种写法:

select 列名 from1 as 别名1,表2 as 别名2 where 条件 and 其他条件;

select 列名 from1 as 别名1 join2 as 别名 on 条件 and 其他条件; 

外连接

外连接分为左外连接和右外连接。
如果联合查询,join 左侧的表完全显示我们就说是左外连接;
join右侧的表完全显示我们就说是右外连接。

select 列名 from1 as 别名1 right join2 as 别名2 on 条件;#右外连接,表2全显示

select 列名 from1 as 别名1 left join2 as 别名2 on 条件;#左外连接,表1全显示

自连接

自连接是指在同一张表连接自身进行查询。
但是必须要对表进行起不同的别名。

select 列名 from 表名 as 别名1,表名 as 别名2 where 条件 and 其它条件;

select 列名 from 表名 as 别名1 join 表名 as 别名2 on 条件 and 其它条件;

子查询

子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。

select 列名 from 表名 where= (select语句 );#例子

单行子查询

作为条件的子查询语句返回值只有一行数据。

多行子查询

作为条件的子查询语句返回值有多行行数据。

  • 可以使用in来处理:
  • 可以使用多列包含:
    将where条件括号中与返回值一一进行比较
  • 使用[not] exists关键字
select 列名 from 表名 where exists (select语句);

后面查询语句返回结果集为空就不执行前面的查询语句,反之不为空执行。

from子句使用子查询

在from子句中使用子查询:子查询语句出现在from子句中。
把一个子查询当做一个临时表使用。

合并查询

为了合并多个select的执行结果,可以使用集合操作符 union,union all。
使用union 和union all时,前后查询的结果集中,字段需要一致。

  • union操作符用于取得两个结果集的并集。当使用该操作符时,
    会自动去掉结果集中的重复行。
  • union all 操作符用于取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2157603.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

战神5/战神:诸神黄昏/God of War Ragnarok(容量175GB)百度网盘下载

版本介绍 v1.0.612.4312|容量175GB|官方简体中文|支持键盘.鼠标.手柄|赠单板学习补丁 配置要求 战神5/战神:诸神黄昏/God of War Ragnarok 游戏介绍 不灭的北欧传奇 由Santa Monica Studio出品、Jetpack Interactive负责PC移植的佳作《God of War Ragnark》将带您…

python实现语音唤醒

1. 环境 python版本:3.11.9 2.完整代码 import sqlite3 import timefrom funasr import AutoModel import sounddevice as sd import numpy as np from pypinyin import lazy_pinyin# 模型参数设置 chunk_size [0, 10, 5] encoder_chunk_look_back 7 decoder_c…

气膜体育馆:低成本、高效益的体育空间解决方案—轻空间

随着全民健身和健康生活理念的兴起,各类体育场馆需求日益增加。在这样的市场背景下,气膜体育馆凭借其低成本、快速建造以及灵活多变的空间设计,成为现代体育场馆建设的新趋势。气膜技术为体育场馆提供了一种全新的解决方案,让运营…

Tomcat 漏洞复现

1、CVE-2017-12615 1、环境开启 2、首页抓包,修改为 PUT 方式提交 Tomcat允许适用put方法上传任意文件类型,但不允许isp后缀文件上传,因此需要配合 windows的解析漏洞 3、访问上传的jsp文件 4、使用工具进行连接 2、后台弱⼝令部署war包 1…

新建flask项目,配置入口文件,启动项目

pycharm新建flask项目时,会提供一个创建flask项目的导向,自动设置虚拟环境,并且安装flask及其依赖而vscode新建flask项目时,需要手动设置虚拟环境并安装flask,需要在终端使用pip install flask命令来安装flask及其依赖…

一文了解什么是大模型?到底大模型有什么用呢?

党中央、国务院面向未来准确把握时代大势,已于十三五期间部署推进数字中国建设,《国民经济和社会发展第十四个五年规划和2035年远景目标纲要》更是将“加快数字化发展,建设数字中国”单列成篇,要求“提高数字政府建设水平”&#…

Kettle的实战练习指南:从数据导入到ETL自动化

在数据集成和数据仓库建设中,Kettle作为一个强大的开源ETL工具,提供了灵活的数据抽取、转换和加载功能。本文将通过实战案例,详细介绍Kettle在数据导入、ETL流程设计、自动化任务调度等方面的应用。 一、数据导入 1. SQL语句导入 导入sql语…

机器人速度雅可比矩阵求解(2自由度平面关节机器人)

关节速度和末端速度空间的映射需要计算雅可比矩阵的逆矩阵,在博途PLC里如何计算一个方阵的逆矩阵,大家可以参考下面这篇文章: 博途PLC矩阵求逆 矩阵求逆 博图SCL_博图矩阵运算-CSDN博客文章浏览阅读839次。本文介绍如何用C语言实现矩阵求逆的过程,详细解析了相关代码,适…

Openai gym environment for multi-agent games

题意:用于多智能体游戏的 OpenAI Gym 环境 问题背景: Is it possible to use openais gym environments for multi-agent games? Specifically, I would like to model a card game with four players (agents). The player scoring a turn starts the…

如何使用地图Picker快捷接入地图服务?

在移动互联网的浪潮中,地图能力的使用已成为应用开发的关键领域。对于依赖地理位置信息的应用而言,用好地图服务不仅是基本要求,更是提升用户体验、实现个性化服务的关键。 但是在使用地图服务过程中,地图组件提供的设置参数种类…

Python学习——【4.5】数据容器:set集合

文章目录 【4.5】数据容器:set集合一、集合的定义格式二、集合的特点三、集合的常见操作四、集合的遍历 【4.5】数据容器:set集合 一、集合的定义格式 为什么使用集合 我们目前接触到了列表、元组、字符串三个数据容器了。基本满足大多数的使用场景。为…

Day4-C语言高级编程

1. gcc和gdb的用法 GNU工具:编译工具:把一个源程序编译为一个可执行程序调试工具:能对执行程序 进行源码或汇编调试软件工程工具:用于协助多人开发或大型软件项目的管理,如make、CVS、Subvision其他工具:用…

DHCP服务器搭建

1. DHCP工作原理 DHCP动态分配IP地址,客户端广播,服务端单播 2. DHCP服务器安装 2.1 安装DHCP # yum install -y dhcp-server 2.2 修改配置文件 # cd /etc/dhcp/ # ls # vi dhcpd.conf dhcpd.conf 主配置文件 第一行:全局dhcp服务器地…

STM32cubeMX + VScode开发GD32移植(HAL库通用),保姆级!!!!!!!

STM32cubeMX VScode开发GD32移植(HAL库通用),保姆级!!!!!!! 文章目录 STM32cubeMX VScode开发GD32移植(HAL库通用),保姆级!!!&#…

构建高可用和高防御力的云服务架构第五部分:PolarDB(5/5)

引言 云计算与数据库服务 云计算作为一种革命性的技术,已经深刻改变了信息技术行业的面貌。它通过提供按需分配的计算资源,使得数据存储、处理和分析变得更加灵活和高效。在云计算的众多服务中,数据库服务扮演着核心角色。数据库服务不仅负…

828华为云征文 | 云服务器Flexus X实例:RAG 开源项目 FastGPT 部署,玩转大模型

目录 一、FastGPT 简介 二、FastGPT 部署 2.1 下载启动文件 2.2 开放端口权限 2.3 启动 FastGPT 三、FastGPT 运行 3.1 登录 FastGPT 3.2 知识库 3.3 应用 四、总结 本篇文章主要通过 Flexus云服务器X实例 部署 RAG 开源项目 FastGPT,通过 FastGPT 可以使…

【5】AT32F437 OpenHarmony轻量系统移植教程(2)

开源地址:https://gitee.com/AT32437_OpenHarmony 学习本文档的意义 1.学习移植OpenHarmony轻量系统到AT32全系列mcu上,本文档移植的具体型号为AT32F437ZMT7 2.学习OpenHarmony轻量系统开发 3.适配vprintf, vfprintf, printf, snprintf 和sprintf 1…

Mybatis自定义TypeHandler,直接存储枚举类对象

在这篇文章中,我们已经知道如何使用枚举类直接接受前端的数字类型参数,省去了麻烦的转换。如果数据库需要保存枚举类的code,一般做法也是代码中手动转换,那么能不能通过某种机制,省去转换,达到代码中直接保…

中间件安全(二)

本文仅作为学习参考使用,本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 前言: 前文链接:中间件安全(一) 本文主要讲解Couchdb数据库未授权越权漏洞(CVE-2017-12635)。 靶场链接:Vu…

(11)(2.1.2) DShot ESCs(三)

文章目录 前言 5 附加配置 前言 DShot 是一种数字 ESC 协议,它允许快速、高分辨率的数字通信,可以改善飞行器控制,这在多旋翼和 quadplane 应用中特别有用。 5 附加配置 DShot更新率 发送 DShot 脉冲的频率可以通过SERVO_DSHOT_RATE配置…