数据库的联合查询

数据库的联合查询

  • 简介
    • 为什么要使⽤联合查询
    • 多表联合查询时MYSQL内部是如何进⾏计算的
    • 构造练习案例数据
    • 案例:⼀个完整的联合查询的过程
  • 内连接
    • 语法
    • ⽰例
  • 外连接
    • 语法
  • ⽰例
  • ⾃连接
    • 应⽤场景
    • 示例
    • 表连接练习
  • ⼦查询
    • 语法
    • 单⾏⼦查询
    • 多⾏⼦查询
    • 多列⼦查询
    • 在from⼦句中使⽤⼦查询
  • 合并查询
    • 创建新表并初始化数据
    • Union
    • Union all
  • 插⼊查询结果
    • 语法
    • 示例

简介

为什么要使⽤联合查询

在数据设计时由于范式的要求,数据被拆分到多个表中,那么要查询⼀个条数据的完整信息,就
要从多个表中获取数据,如下图所⽰:要获取学⽣的基本信息和班级信息就要从学⽣表和班级表中获
取,这时就需要使⽤联合查询,这⾥的联合指的是多个表的组合。
在这里插入图片描述

多表联合查询时MYSQL内部是如何进⾏计算的

• 参与查询的所有表取笛卡尔积,结果集在临时表中
在这里插入图片描述
• 观察哪些记录是有效数据,根据两个表的关联关系过滤掉⽆效数据
在这里插入图片描述
如果联合查询表的个数越多,表中的数据量越⼤,临时表就会越⼤,所以根据实际情况确定联合查询
表的个数

构造练习案例数据

-- ----------------------------
-- Table structure for class
-- ----------------------------CREATE TABLE `class`  (`class_id` bigint NOT NULL AUTO_INCREMENT,`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,PRIMARY KEY (`class_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of class
-- ----------------------------
INSERT INTO `class` VALUES (1, '计算机系2019级1班');
INSERT INTO `class` VALUES (2, '中文系2019级3班');
INSERT INTO `class` VALUES (3, '自动化2019级5班');
-- ----------------------------
-- Table structure for course
-- ----------------------------CREATE TABLE `course`  (`course_id` bigint NOT NULL AUTO_INCREMENT,`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,PRIMARY KEY (`course_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of course
-- ----------------------------
INSERT INTO `course` VALUES (1, 'Java');
INSERT INTO `course` VALUES (2, '中国传统文化');
INSERT INTO `course` VALUES (3, '计算机原理');
INSERT INTO `course` VALUES (4, '语文');
INSERT INTO `course` VALUES (5, '高阶数学');
INSERT INTO `course` VALUES (6, '英文');-- ----------------------------
-- Table structure for student
-- ----------------------------CREATE TABLE `student`  (`student_id` bigint NOT NULL AUTO_INCREMENT,`sn` varchar(6) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,`mail` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,`class_id` bigint NULL DEFAULT NULL,PRIMARY KEY (`student_id`) USING BTREE,UNIQUE INDEX `sn`(`sn` ASC) USING BTREE,INDEX `class_id`(`class_id` ASC) USING BTREE,CONSTRAINT `student_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `class` (`class_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES (1, '09982', '黑旋风李逵', 'xuanfeng@qq.com', 1);
INSERT INTO `student` VALUES (2, '00835', '菩提老祖', NULL, 1);
INSERT INTO `student` VALUES (3, '00391', '白素贞', NULL, 1);
INSERT INTO `student` VALUES (4, '00031', '许仙', 'xuxian@qq.com', 1);
INSERT INTO `student` VALUES (5, '00054', '不想毕业', NULL, 1);
INSERT INTO `student` VALUES (6, '51234', '好好说话', 'say@qq.com', 2);
INSERT INTO `student` VALUES (7, '83223', 'tellme', NULL, 2);
INSERT INTO `student` VALUES (8, '09527', '老外学中文', 'foreigner@qq.com', 2);-- ----------------------------
-- Table structure for score
-- ----------------------------CREATE TABLE `score`  (`score_id` bigint NOT NULL AUTO_INCREMENT,`student_id` bigint NULL DEFAULT NULL,`course_id` bigint NULL DEFAULT NULL,`score` decimal(5, 2) NULL DEFAULT NULL,PRIMARY KEY (`score_id`) USING BTREE,INDEX `student_id`(`student_id` ASC) USING BTREE,INDEX `course_id`(`course_id` ASC) USING BTREE,CONSTRAINT `score_ibfk_1` FOREIGN KEY (`student_id`) REFERENCES `student` (`student_id`) ON DELETE RESTRICT ON UPDATE RESTRICT,CONSTRAINT `score_ibfk_2` FOREIGN KEY (`course_id`) REFERENCES `course` (`course_id`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of score
-- ----------------------------
INSERT INTO `score` VALUES (1, 1, 1, 70.50);
INSERT INTO `score` VALUES (2, 1, 3, 98.50);
INSERT INTO `score` VALUES (3, 1, 5, 33.00);
INSERT INTO `score` VALUES (4, 1, 6, 98.00);
INSERT INTO `score` VALUES (5, 2, 1, 60.00);
INSERT INTO `score` VALUES (6, 2, 5, 59.50);
INSERT INTO `score` VALUES (7, 3, 1, 33.00);
INSERT INTO `score` VALUES (8, 3, 3, 68.00);
INSERT INTO `score` VALUES (9, 3, 5, 99.00);
INSERT INTO `score` VALUES (10, 4, 1, 67.00);
INSERT INTO `score` VALUES (11, 4, 3, 23.00);
INSERT INTO `score` VALUES (12, 4, 5, 56.00);
INSERT INTO `score` VALUES (13, 4, 6, 72.00);
INSERT INTO `score` VALUES (14, 5, 1, 81.00);
INSERT INTO `score` VALUES (15, 5, 5, 37.00);
INSERT INTO `score` VALUES (16, 6, 2, 56.00);
INSERT INTO `score` VALUES (17, 6, 4, 43.00);
INSERT INTO `score` VALUES (18, 6, 6, 79.00);
INSERT INTO `score` VALUES (19, 7, 2, 80.00);
INSERT INTO `score` VALUES (20, 7, 6, 92.00);

案例:⼀个完整的联合查询的过程

• 查询学⽣姓名为许仙的详细信息,包括学⽣个⼈信息和班级信息

  1. 确定参与查询的表,学⽣表和班级表
    在这里插入图片描述
  2. 确定连接条件,student表中的class_id与class表中id列的值相等
    class id在两张表中都存在,MYSQL分不清当前语句中的class id应该取自哪张表
    可以通过表名.列名的方式来解决这个问题
# 在where子句中加入连接条件
select * from student, class where student.class_id = class.class_id;

在这里插入图片描述

  1. 加⼊查询条件
    在这里插入图片描述
# 依题意添加where条件
select * from student,class where student.class_id = class.class_id and student.name = '许仙';

在这里插入图片描述

  1. 精减查询结果字段
select student.student_id,student.name,student.mail,class.name 
from student,class 
where student.class_id = class.class_id 
and student.name = '许仙'; 

在这里插入图片描述

  1. 可以为表名指定别名
select s.student_id,s.name,s.mail,c.name 
from student s,class c 
where s.class_id = c.class_id 
and s.name = '许仙'; 

在这里插入图片描述

内连接

语法

select 字段 from1 别名1,2 别名2 where 连接条件 and 其他条件;select 字段 from1 别名1 [inner] join2 别名2 on 连接条件 where 其他条件;

⽰例

• 查询"菩提老祖"的成绩

# 查询"菩提老祖"的成绩
select st.name,sc.score from student st, score sc where st.student_id = sc.student_id and st.name = '菩提老祖';select st.name,sc.score from student st join score sc on st.student_id = sc.student_id where st.name = '菩提老祖';

在这里插入图片描述

• 查询所有人的总成绩,及每个人的个⼈信息

# 查询所有人的总成绩,及每个人的个人信息
select st.student_id,st.name,st.mail,c.name,SUM(sc.score) 
from student st,score sc,class c
where st.student_id = sc.student_id 
and c.class_id = st.class_id
group by st.student_id;

在这里插入图片描述

Group by 使⽤了student.student_id进⾏分组,查询表列表中的student.name、student.mail和class.name没有出现在Group by分组中,也没有包含在聚合函数中,这是因为SQL规定在Group by分组查询时,如果查询列表中的列没有出现在GROUP BY⼦句中,但这些列的值在每个分组内部是相同的,那么它们可以出现在查询结果中。
• 查询所有同学每⻔课的成绩,及同学的个⼈信息

# 查询所有同学每门课的成绩,及同学的个人信息
select st.student_id,st.name,st.mail,cl.name,cr.name,sc.score
fromstudent st,class cl,score sc,course cr
where st.student_id = sc.student_id
and cl.class_id = st.class_id
and cr.course_id = sc.course_id
order byst.student_id;

在这里插入图片描述
结果集中没有"老外学中文"同学的成绩,因为score表中没有这位同学的记录
在这里插入图片描述

外连接

• 外连接分为左外连接、右外连接和全外连接三种类型,MySQL不⽀持全外连接。
• 左外连接:返回左表的所有记录和右表中匹配的记录。如果右表中没有匹配的记录,则结果集中对
应字段会显⽰为NULL。
• 右外连接:与左外连接相反,返回右表的所有记录和左表中匹配的记录。如果左表中没有匹配的记
录,则结果集中对应字段会显⽰为NULL。
• 全外连接:结合了左外连接和右外连接的特点,返回左右表中的所有记录。如果某⼀边表中没有匹
配的记录,则结果集中对应字段会显⽰为NULL。

语法

-- 左外连接,表1完全显⽰
select 字段名 from 表名1 left join 表名2 on 连接条件;
-- 右外连接,表2完全显⽰
select 字段 from 表名1 right join 表名2 on 连接条件;

⽰例

• 查询没有参加考试的同学信息

# 查询没有参加考试的同学信息
# 左连接以JOIN左边的表为基准,左表显示全部记录,右表中没有匹配的记录用NULL填充
select * from student left join score on student.student_id = score.student_id;

在这里插入图片描述

# 过滤参加了考试的同学
select st.* 
from student st 
left join score sc 
on st.student_id = sc.student_id 
where sc.score is NULL; 

在这里插入图片描述
• 查询没有学⽣的班级

# 查询没有学生的班级
# 右连接以JOIN右边的表为基准,右表显示全部记录,左表中没有匹配的记录用NULL填充
select * 
fromstudent s
right join  class c
ons.class_id = c.class_id;

在这里插入图片描述

# 过滤有学生的班级
selectc.*
from student s
right join class c
on s.class_id = c.class_id
where student_id is NULL;

在这里插入图片描述

⾃连接

应⽤场景

⾃连接是⾃⼰与⾃⼰取笛卡尔积,可以把⾏转化成列,在查询的时候可以使⽤where条件对结果进⾏
过滤,或者说实现⾏与⾏之间的⽐较。在做表连接时为表起不同的别名。

# 不为表指定别名
select * from score,score;

在这里插入图片描述

# 指定别名
select * from score s1, score s2;

示例

• 显示所有“计算机原理”成绩比“java”成绩高的成绩信息

# 显示所有“计算机原理”成绩比“java”成绩高的成绩信息
# 首先分两步进行,先查出计算机原理和java的课程Id,分别为1和3
select * from course where name = '计算机原理' or name = 'java';

在这里插入图片描述

# 再查询成绩表中,计算机原理成绩比java成绩高的信息
select * 
from score s1,score s2
wheres1.student_id = s2.student_id
ands1.course_id = 3 and s2.course_id = 1
and s1.score > s2.score;

在这里插入图片描述

# 结合在一起进行查询
select s.name,s1.*
fromscore s1,score s2,course c1,course c2,student s
where s1.student_id = s2.student_id
ands.student_id = s1.student_id
ands2.course_id = c2.course_id
and c1.name = '计算机原理' and c2.name = 'java'
and c1.course_id = s1.course_id
and s1.score > s2.score;

在这里插入图片描述

表连接练习

• 显示所有“计算机原理”成绩比“java”成绩高的学⽣信息和班级以及成绩信息

select s.name 姓名,c.name 班级,s1.score 计算机原理成绩, s2.score java成绩
fromscore s1,score s2,course c1,course c2,student s,class c
where s1.student_id = s2.student_id
and s1.course_id = c1.course_id
ands2.course_id = c2.course_id
and c1.name = '计算机原理' and c2.name = 'java'
and s1.score > s2.score
ands.student_id = s1.student_id
and c.class_id = s.class_id;

在这里插入图片描述

⼦查询

⼦查询是把⼀个SELECT语句的结果当做别⼀个SELECT语句的条件,也叫嵌套查询

语法

select * from table1 where col_name1 {= | IN} (select col_name1 from table2 where col_name2 {= | IN} [(select ...)] ...
)

单⾏⼦查询

嵌套的查询中只返回⼀⾏数据
• 示例:查询与"不想毕业"同学的同班同学

# 查询与"不想毕业"同学的同班同学 
select * from student where class_id = (select class_id from student where name = '不想毕业') and name != '不想毕业';

在这里插入图片描述

多⾏⼦查询

嵌套的查询中返回多⾏数据,使⽤[NOT] IN关键字
• 示例:查询语文或英文课程的成绩信息

# 查询语文或英文课程的成绩信息 
select * from  score where course_id in (select course_id from course where name = '英文' or name = '语文');

在这里插入图片描述

# 使用NOT IN 可以查询除了语文和英文课程的成绩信息
select * from  score where course_id not in (select course_id from course where name = '英文' or name = '语文');

在这里插入图片描述

多列⼦查询

单⾏⼦查询和多⾏⼦查询都只返回⼀列数据,多列⼦查询中可以返回多个列的数据,外层查询与嵌套
的内层查询的列要匹配
• 示例:查询重复录⼊的分数

# 插入重复的分数:score, student_id, course_id列重复
insert into score(score_id,student_id,course_id,score) values (21,1,1,70.5),(22,1,1,98.5),(23,2,1,60);
# 子查询中返回多个列
select score_id,student_id,course_id,score 
from score 
where (student_id,course_id,score) 
in (select student_id,course_id,score from score group by student_id,course_id,score having count(*) > 1);

在这里插入图片描述

在from⼦句中使⽤⼦查询

当⼀个查询产⽣结果时,MySQL⾃动创建⼀个临时表,然后把结果集放在这个临时表中,最终返回
给⽤户,在from⼦句中也可以使⽤临时表进⾏⼦查询或表连接操作
• 示例:查询所有比“中文系2019级3班”平均分高的成绩信息

# 查询所有比“中文系2019级3班”平均分高的成绩信息
# 首先分步进行,第一步先查出中文系2019级3班的平均分
select AVG(sc.score) 
from class c, score sc, student s 
where c.class_id = s.class_id 
and sc.student_id = s.student_id 
and c.name = '中文系2019级3班' 

在这里插入图片描述

select sc.* 
from score sc,(select AVG(sc.score) scorefrom class c, score sc, student s where c.class_id = s.class_id and sc.student_id = s.student_id and c.name = '中文系2019级3班' ) tmp
where sc.score > tmp.score;

在这里插入图片描述
tmp 是临时表的别名

合并查询

在实际应⽤中,为了合并多个select操作返回的结果,可以使⽤集合操作符 union,union all

创建新表并初始化数据

create table student1 like student;insert into student1(sn,name,mail,class_id) values('09982','李鬼','xuanfeng@qq.com',1),('00001','测试用户',null,1),('00391','白素贞',null,1),('00031','许仙','xuxian@qq.com',1);

在这里插入图片描述

在这里插入图片描述

Union

该操作符⽤于取得两个结果集的并集。当使⽤该操作符时,会⾃动去掉结果集中的重复⾏。

select * from student union select * from student1;

在这里插入图片描述

Union all

该操作符⽤于取得两个结果集的并集。当使⽤该操作符时,不会去掉结果集中的重复⾏

select * from student union all select * from student1;

在这里插入图片描述

插⼊查询结果

语法

INSERT INTO table_name [(column [, column ...])] SELECT ...

示例

• 将student表中‘菩提老祖’和‘不想毕业’的学⽣信息复制到student1表中

insert into student1(sn,name,mail,class_id) (select s.sn,s.name,s.mail,s.class_id from student s where name = '菩提老祖' or name = '不想毕业');select * from student1;

在这里插入图片描述
在这里插入图片描述


关于数据库的联合查询先了解到这里,希望这篇文章对大家有帮助,谢谢大家的阅读!!!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文阅读:A fast, scalable and versatile tool for analysis of single-cell omics data

Zhang, K., Zemke, N.R., Armand, E.J. et al. A fast, scalable and versatile tool for analysis of single-cell omics data. Nat Methods 21, 217–227 (2024). 论文地址:https://doi.org/10.1038/s41592-023-02139-9 代码地址:https://github.com…

Hive离线数仓结构分析

Hive离线数仓结构 首先,在数据源部分,包括源业务库、用户日志、爬虫数据和系统日志,这些都是数据的源头。这些数据通过Sqoop、DataX或 Flume 工具进行提取和导入操作。这些工具负责将不同来源的数据传输到基于 Hive 的离线数据仓库中。 在离线…

设计模式之 模板方法模式

模板方法模式是行为型设计模式的一种。它定义了一个算法的骨架,并将某些步骤的实现延迟到子类中。模板方法模式允许子类在不改变算法结构的情况下重新定义算法的某些特定步骤。 模板方法模式的核心在于: 封装算法的骨架:通过父类中的模板方…

【分治】--- 快速选择算法

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: 算法Journey 🏠 颜色划分 📌 题目解析 颜色分类 本题要求我们原地对元数组划分0,1,2三个区域,也就是不能使用辅助数组&#xf…

万物皆可Docker,在NAS上一键部署最新苹果MacOS 15系统

万物皆可Docker,在NAS上一键部署最新苹果MacOS 15系统 哈喽小伙伴们还,我是Stark-C~ 最近苹果Mac mini 2024款在政府补贴的加持下,仅需3500块钱左右就能到手确实挺香的。我看很多评论区的小伙伴跃跃欲试,但是也有不少之前从未体…

C++设计模式行为模式———状态模式

文章目录 一、引言二、状态模式三、总结三、总结 一、引言 状态模式是一种行为设计模式, 让你能在一个对象的内部状态变化时改变其行为, 使其看上去就像改变了自身所属的类一样。其实现可完成类似有限状态机的功能。换句话说,一个对象可以处…

vscode自动打印日志插件

自动日志工具(Auto Logger Log) 概述 自动日志工具(Auto Logger Log) 是一款 VS Code 扩展,用于简化生成调试日志的过程。它可以为选中的变量自动生成打印语句,帮助开发者快速记录和调试代码。该扩展支持多…

优雅的不等式——Hard

上一文《Easy》末尾出现了又要我们证明的例子,Hard难度就是继续答题答下去 其实一样可以用那篇文章https://zhuanlan.zhihu.com/p/669285539中的式子继续算下去,但是有三个系数,实在是太费时间和人力了 翻到下面的第十九种类型,可…

虚拟局域网PPTP配置与验证(二)

虚拟局域网PPTP配置与验证(二) windows VPN客户端linux 客户端openwrt客户端性能验证虚拟局域网PPTP配置与验证(一)虚拟局域网PPTP配置与验证(二) : 本文介绍几种客户端连接PPTP服务端的方法,同时对linux/windows/openwrt 操作系统及x86、arm硬件平台下PPTP包转发性能进…

Move 合约部署踩坑笔记:如何解决 Sui 客户端发布错误Committing lock file

Move 共学活动:快速上手 Move 开发 为了帮助更多开发者快速了解和掌握 Move 编程语言,Move 共学活动由 HOH 社区、HackQuest、OpenBuild、KeyMap 联合发起。该活动旨在为新手小白提供一个良好的学习平台,带领大家一步步熟悉 Move 语言&#…

介绍一下strupr(arr);(c基础)

hi , I am 36 适合对象c语言初学者 strupr(arr)&#xff1b;函数是把arr数组变为大写字母 格式 #include<string.h> strupr(arr); 返回值为arr 链接分享一下arr的意义(c基础)(必看)(牢记)-CSDN博客 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #incl…

进程间通信5:信号

引入 我们之前学习了信号量&#xff0c;信号量和信号可不是一个东西&#xff0c;不能混淆。 信号是什么以及一些基础概念 信号是一种让进程给其他进程发送异步消息的方式 信号是随时产生的&#xff0c;无法预测信号可以临时保存下来&#xff0c;之后再处理信号是异步发送的…

浅谈网络 | 传输层之套接字Socket

目录 基于 TCP 协议的 Socket 程序调用过程基于 UDP 协议的 Socket 程序函数调用过程服务器如何接入更多的项目构建高并发服务端&#xff1a;从多进程到 IO 多路复用 在前面&#xff0c;我们已经介绍了 TCP 和 UDP 协议&#xff0c;但还没有实践过。接下来这一节&#xff0c;我…

Spire.PDF for .NET【页面设置】演示:打开 PDF 时自动显示书签或缩略图

用户打开 PDF 文档时&#xff0c;他们会看到 PDF 的初始视图。默认情况下&#xff0c;打开 PDF 时不会显示书签面板或缩略图面板。在本文中&#xff0c;我们将演示如何设置文档属性&#xff0c;以便每次启动文件时都会打开书签面板或缩略图面板。 Spire.PDF for .NET 是一款独…

FileLink内外网文件共享系统与FTP对比:高效、安全的文件传输新选择

随着信息技术的不断进步&#xff0c;文件传输和共享已经成为企业日常工作中不可或缺的一部分。传统的FTP&#xff08;File Transfer Protocol&#xff09;协议在一定程度上为文件共享提供了便利&#xff0c;但随着企业对文件传输的需求越来越复杂&#xff0c;FileLink内外网文件…

神经网络归一化方法总结

在深度学习中&#xff0c;归一化 是提高训练效率和稳定性的关键技术。以下是几种常见的神经网络归一化方法的总结&#xff0c;包括其核心思想、适用场景及优缺点。 四种归一化 特性Batch NormalizationGroup NormalizationLayer NormalizationInstance Normalization计算维度…

ORB-SLAM2源码学习:Initializer.cc:Initializer::ComputeF21地图初始化——计算基础矩阵

前言 在平面场景我们通过求解单应矩阵H来求解位姿&#xff0c;但是我们在实际中常见的都是非平面场景&#xff0c; 此时需要用基础矩阵F求解位姿。 1.函数声明 cv::Mat Initializer::ComputeF21(const vector<cv::Point2f> &vP1, const vector<cv::Point2f>…

离散化 C++

题目 解题思路 将所有对坐标的访问用map映射到一个新的坐标轴上再在新的坐标轴上进行加法用前缀和快速求出区间的和 代码实现 #include<iostream> #include<algorithm> #include<unordered_map>using namespace std;typedef pair<int, int> PII;con…

uniop触摸屏维修eTOP40系列ETOP40-0050

在现代化的工业与商业环境中&#xff0c;触摸屏设备已成为不可或缺的人机交互界面。UNIOP&#xff0c;作为一个知名的触摸屏品牌&#xff0c;以其高性能、稳定性和用户友好性&#xff0c;广泛应用于各种自动化控制系统、自助服务终端以及高端展示系统中。然而&#xff0c;即便如…

机器学习与图像处理中上采样与下采样

一、机器学习中的上采样 目的&#xff1a;在机器学习中&#xff0c;上采样用于处理不平衡数据集&#xff0c;即某些类别的样本数量远多于其他类别。上采样的目标是通过增加少数类样本的数量来平衡类别分布&#xff0c;从而提高模型对少数类的识别能力。 1.随机过采样&#xff0…