联表查询的更新

2024-05-05 00:48
文章标签 查询 更新 联表

本文主要是介绍联表查询的更新,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景:

     之前写过一篇关于数据库联表查询的博客《再看数据库——(6)连接》,主要讲了连接的类型,以及如何使用连接进行多表查询。本篇博客就是在这基础上延伸而来的。首先,我们先来看一个联表查询的例子。

USE TestUnion
--员工集合
CREATE TABLE StaffUnion(ID INT PRIMARY KEY,NAME VARCHAR(10) NOT NULL,comment VARCHAR(30),remark INT)
--员工表
CREATE TABLE Staff(ID INT PRIMARY KEY,PersonNAME VARCHAR(10) NOT NULL,StaffUnionID INT,comment VARCHAR(30),remark INT)
--工作计划表
CREATE TABLE StaffPlan(ID INT PRIMARY KEY,StaffID INT ,PlanName VARCHAR(10) NOT NULL,PlanContent VARCHAR(60),remark INT)


注:三个表中没有添加外键约束,考虑到插入删除数据的方便。


插入几条简单的数据:

INSERT INTO staffUnion VALUES (1,'test1','员工集合一',1);
INSERT INTO staffUnion VALUES (2,'test2','员工集合二',1);
INSERT INTO staffUnion VALUES (3,'test3','员工集合三',1);
INSERT INTO Staff VALUES (1,'张三',1,'无',1);
INSERT INTO Staff VALUES (2,'李四',1,'无',1);
INSERT INTO Staff VALUES (3,'王五',2,'无',1);
INSERT INTO Staff VALUES (4,'李明',2,'无',1);INSERT INTO StaffPlan VALUES(1,1,'编制计划','结合年度信息,编制计划',1);
INSERT INTO StaffPlan VALUES(2,1,'搭建环境','搭建环境,计划五个小时',1);
INSERT INTO StaffPlan VALUES(3,1,'编制计划','结合年度信息,编制计划',0);

要求:

将员工集合一种的张三对应的编制计划改为融资计划,并且是有效数据,即remark=1。

相应的SQL语句为:

UPDATE StaffPlan SET StaffPlan.PlanName='融资计划' FROM StaffUnion 
INNER JOIN Staff ON Staff.StaffUnionID=StaffUnion.ID
INNER JOIN StaffPlan ON StaffPlan.StaffID=Staff.ID WHERE StaffPlan.ID=1
AND StaffPlan.remark=1


结果显示:

StaffPlan表


如果不使用这种方法,那么我们先进行联表查询。

SELECT staffPlan.ID,staffPlan.PlanName,staffPlan.PlanContent,StaffPlan.remark FROM staffPlan INNER JOIN staff ON Staff.ID=StaffPlan.StaffID
INNER JOIN StaffUnion ON staffUnion.ID=Staff.StaffUnionID WHERE staffPlan.planname='编制计划'AND StaffPlan.remark='1'


查到这条数据后,再进行更新。

UPDATE staffplan SET staffplan.planname='融资计划' WHERE staffPlan.planname='编制计划'AND StaffPlan.remark='1'

对比分析:

      使用连表查询再更新需要两个sql语句来完成,而且当数据量比较大的时候,很容易出错。

这篇关于联表查询的更新的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/960465

相关文章

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

Redis缓存问题与缓存更新机制详解

《Redis缓存问题与缓存更新机制详解》本文主要介绍了缓存问题及其解决方案,包括缓存穿透、缓存击穿、缓存雪崩等问题的成因以及相应的预防和解决方法,同时,还详细探讨了缓存更新机制,包括不同情况下的缓存更... 目录一、缓存问题1.1 缓存穿透1.1.1 问题来源1.1.2 解决方案1.2 缓存击穿1.2.1

Linux Mint Xia 22.1重磅发布: 重要更新一览

《LinuxMintXia22.1重磅发布:重要更新一览》Beta版LinuxMint“Xia”22.1发布,新版本基于Ubuntu24.04,内核版本为Linux6.8,这... linux Mint 22.1「Xia」正式发布啦!这次更新带来了诸多优化和改进,进一步巩固了 Mint 在 Linux 桌面

MySQL不使用子查询的原因及优化案例

《MySQL不使用子查询的原因及优化案例》对于mysql,不推荐使用子查询,效率太差,执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,本文给大家... 目录不推荐使用子查询和JOIN的原因解决方案优化案例案例1:查询所有有库存的商品信息案例2:使用EX

SpringCloud配置动态更新原理解析

《SpringCloud配置动态更新原理解析》在微服务架构的浩瀚星海中,服务配置的动态更新如同魔法一般,能够让应用在不重启的情况下,实时响应配置的变更,SpringCloud作为微服务架构中的佼佼者,... 目录一、SpringBoot、Cloud配置的读取二、SpringCloud配置动态刷新三、更新@R

SpringBoot基于MyBatis-Plus实现Lambda Query查询的示例代码

《SpringBoot基于MyBatis-Plus实现LambdaQuery查询的示例代码》MyBatis-Plus是MyBatis的增强工具,简化了数据库操作,并提高了开发效率,它提供了多种查询方... 目录引言基础环境配置依赖配置(Maven)application.yml 配置表结构设计demo_st

Ubuntu 24.04 LTS怎么关闭 Ubuntu Pro 更新提示弹窗?

《Ubuntu24.04LTS怎么关闭UbuntuPro更新提示弹窗?》Ubuntu每次开机都会弹窗提示安全更新,设置里最多只能取消自动下载,自动更新,但无法做到直接让自动更新的弹窗不出现,... 如果你正在使用 Ubuntu 24.04 LTS,可能会注意到——在使用「软件更新器」或运行 APT 命令时,

Redis KEYS查询大批量数据替代方案

《RedisKEYS查询大批量数据替代方案》在使用Redis时,KEYS命令虽然简单直接,但其全表扫描的特性在处理大规模数据时会导致性能问题,甚至可能阻塞Redis服务,本文将介绍SCAN命令、有序... 目录前言KEYS命令问题背景替代方案1.使用 SCAN 命令2. 使用有序集合(Sorted Set)

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

PostgreSQL如何查询表结构和索引信息

《PostgreSQL如何查询表结构和索引信息》文章介绍了在PostgreSQL中查询表结构和索引信息的几种方法,包括使用`d`元命令、系统数据字典查询以及使用可视化工具DBeaver... 目录前言使用\d元命令查看表字段信息和索引信息通过系统数据字典查询表结构通过系统数据字典查询索引信息查询所有的表名可