【MySQL】一些业务场景常见的查询,比如实现多表字段同步,递归查询等

目录

  • 快速加注释
  • 多表关联查询
  • 更新多个字段
  • 循环查询子级
    • 方法1:递归查询
    • 方法2:循环查询

快速加注释

使用ALTER TABLE语句可以修改表结构,包括添加注释。以下是添加注释的语法:

ALTER TABLE 表名 MODIFY COLUMN 列名 列类型 COMMENT '注释内容';

示例:

ALTER TABLE users MODIFY COLUMN age INT COMMENT '年龄';

多表关联查询

当涉及多个表的关联查询时,我们可以使用MySQL的JOIN操作来实现。JOIN操作允许我们根据两个或多个表之间的共同列将它们连接起来,从而创建一个包含两个或多个表中数据的结果集。

下面是一个示例,演示如何使用JOIN操作从两个表中检索相关的数据:

假设我们有两个表,一个是"students"表,包含学生的信息,另一个是"grades"表,包含学生的成绩信息。这两个表之间有一个共同的列"student_id",可以用来将它们连接起来。

首先,我们可以使用以下语句创建一个"students"表:

CREATE TABLE students (student_id INT PRIMARY KEY,name VARCHAR(50),age INT,gender CHAR(1)
);

然后,我们可以使用以下语句创建一个"grades"表:

CREATE TABLE grades (student_id INT,subject VARCHAR(50),score INT,PRIMARY KEY (student_id, subject),FOREIGN KEY (student_id) REFERENCES students(student_id)
);

现在,我们可以向这两个表中插入一些数据:

INSERT INTO students (student_id, name, age, gender)
VALUES (1, 'Alice', 18, 'F'),(2, 'Bob', 19, 'M'),(3, 'Charlie', 20, 'M');INSERT INTO grades (student_id, subject, score)
VALUES (1, 'Math', 90),(1, 'English', 85),(2, 'Math', 95),(3, 'English', 80);

最后,我们可以使用以下语句来执行一个基本的关联查询,并检索学生的姓名、科目和分数:

SELECT students.name, grades.subject, grades.score
FROM students
JOIN grades ON students.student_id = grades.student_id;

这将返回一个结果集,其中包含学生的姓名、科目和分数的相关信息。

此外,还有其他几种JOIN操作可用,例如LEFT JOIN、RIGHT JOIN和FULL JOIN,它们允许根据连接条件检索不同类型的结果集。您可以根据您的需求选择合适的JOIN操作。当涉及多个表的关联查询时,我们可以使用MySQL的JOIN操作来实现。JOIN操作允许我们根据两个或多个表之间的共同列将它们连接起来,从而创建一个包含两个或多个表中数据的结果集。

在这里插入图片描述

更新多个字段

在MySQL中,可以使用UPDATE语句来更新多个字段,并使用JOIN语句来关联两个表。

下面是一个示例,演示如何更新两个表中的多个字段:

UPDATE table1
JOIN table2 ON table1.id = table2.id
SET table1.field1 = 'value1',table1.field2 = 'value2',table2.field3 = 'value3',table2.field4 = 'value4'
WHERE table1.id = 1;

在上述示例中,我们将表table1table2通过JOIN关键字关联起来,并使用ON子句指定它们之间的关联条件。然后,使用SET语句来设置要更新的字段和值。最后,使用WHERE子句来限制更新的范围。

请将示例中的table1table2field1field2field3field4替换为您实际使用的表和字段名称,将value1value2value3value4替换为要更新的值,将1替换为要更新的记录的标识符。在MySQL中,可以使用UPDATE语句来更新多个字段,并使用JOIN语句来关联两个表。

循环查询子级

要循环查询所有的子级,您可以使用递归查询或使用循环来实现。

方法1:递归查询

  1. 首先,您需要有一个表,其中包含主键和父级ID列。
  2. 使用递归查询来获取所有的子级。递归查询是指在查询中调用自身的查询。
  3. 在查询中,通过递归查询来获取所有的子级,并将它们添加到结果集中。

以下是一个示例的递归查询的MySQL语句:

WITH RECURSIVE sublevels AS (SELECT id, parent_id, name FROM your_table WHERE id = 1UNION ALLSELECT t.id, t.parent_id, t.name FROM your_table tINNER JOIN sublevels s ON t.parent_id = s.id
)
SELECT * FROM sublevels;

在这个示例中,我们假设您有一个名为your_table的表,其中包含idparent_idname列。我们使用递归查询来获取ID为1的节点的所有子级。

方法2:循环查询

  1. 首先,您需要有一个表,其中包含主键和父级ID列。
  2. 使用一个循环来查询所有的子级。循环可以是使用编程语言(如PHP、Java等)中的循环结构,或使用存储过程或函数中的循环实现的。

以下是一个示例的循环查询的MySQL语句:

SET @parent_id = 1;
CREATE TEMPORARY TABLE sublevels AS SELECT * FROM your_table WHERE id = @parent_id;WHILE (SELECT COUNT(*) FROM sublevels) > 0 DOINSERT INTO sublevels SELECT * FROM your_table WHERE parent_id IN (SELECT id FROM sublevels);
END WHILE;SELECT * FROM sublevels;

在这个示例中,我们创建了一个临时表sublevels,并初始化它为ID为1的节点。然后,我们使用循环来重复查询所有的子级,并将它们添加到sublevels表中,直到没有更多的子级为止。最后,我们从sublevels表中检索所有的子级。

请根据您的具体需求选择适合您的方法。要循环查询所有的子级,您可以使用递归查询或使用循环来实现。

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

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

相关文章

【数据结构初阶】顺序表三道经典算法题(详解+图例)

Hello!很高兴又见到你了~~~ 看看今天要学点什么来充实大脑吧—— 目录 1、移除元素 【思路图解】 【总结】 2、删除有序数组中的重复项 【思路图解】 【总结】 3、合并两个有序数组 【思路图解】 【总结】 至此结束,Show Time! 1、…

TCP/IP协议,以及对等网络通信原理!

TCP/IP模型协议分层 应用层: HTTP:超文本传输协议(网站访问WEB)(Apache、nginx)(IIS) FTP:文件传输协议(网络文件传输) TFTP:简单文件传输协议&#xff0…

神经网络理论(机器学习)

motivation 如果逻辑回归的特征有很多,会造出现一些列问题,比如: 线性假设的限制: 逻辑回归是基于线性假设的分类模型,即认为特征与输出之间的关系是线性的。如果特征非常多或者特征与输出之间的关系是非线性的&#…

PyTorch LSTM 单步、多步时间预测

PyTorch LSTM 单步、多步时间预测 多维输入、多维输出;单步预测、多步滚动预测 import torch import torch.nn as nn import torch.optim as optimclass LSTMModel(nn.Module):def __init__(self, input_dim, hidden_dim, num_layers, output_dim):super(LSTMMode…

【云原生】Kubernetes微服务Istio:介绍、原理、应用及实战案例

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

西南民族大学学报人文社会科学版

《西南民族大学学报(人文社会科学版)》简介 《西南民族大学学报(人文社会科学版)》(以下简称“学报”)系国家民族事务委员会主管、西南民族大学主办的民族类综合性学术期刊。创刊于1979年,2000年…

数据恢复篇:适用于 Android 视频恢复的 6 个工具

在智能手机这个动态的世界里,每一刻都被捕捉并以数字方式存储,丢失珍贵的视频可能是一种令人心碎的经历。不必担心,因为 Android 生态系统提供了大量旨在挽救这些珍贵回忆的视频恢复应用程序。 这些应用程序是强大的工具,旨在挽救…

MongoDB文档整理

过往mongodb文档: https://blog.csdn.net/qq_46921028/article/details/123361633https://blog.csdn.net/qq_46921028/article/details/131136935https://blog.csdn.net/qq_46921028/article/details/139247847 1. MongoDB前瞻 1、MongoDB概述: MongoDB是…

Java--Collection集合

一、Collection 1.1 概述 Collection 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素【集合中只能存储引用类型】。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一…

华为智慧交通-高速公路视频云联网解决方案

华为高速公路视频云联网解决方案摘要: 智慧高速愿景智慧高速旨在实现人、车、路互信协同,提供更安全、高效、便捷的出行体验。通过全路段感知、全过程管控、全天候通行,以及智慧路段、服务区的建设,实现数字化、知识型、安全型、高…

用LangGraph搭建智能体—AI Agents in LangGraph(一)

1. 学习背景 LangGraph最近出来后如火如荼,最近AndrewNg又出了新鲜的学习课程,于是乎先了解一波。 学习地址:传送门 代码地址:传送门 废话不多说,开始干活。 2. 从头开始构建代理(Build an Agent from…

ubuntu24无法网络无法连接的问题

今天使用ubuntu的最新版24.04碰见个很奇怪的问题,所有防火墙都是关闭的,但是无法访问3306端口。 通过官方文档发现,原来新版本引入了AppArmor,进行了跟高级别的安全控制, 使用命令aa-status查看 果然在生效 这就是为什…

厦门大学学报哲学社会科学版

《厦门大学学报(哲学社会科学版)》是厦门大学主办、教育部主管的高层次的哲学社会科学综合性学术刊物,2003年底首批入选教育部“哲学社会科学名刊工程”,2012年获国家社科基金学术期刊资助。 《厦门大学学报》的前身为《厦门大学…

[经验] 孙叔敖举于海,百里奚举于市的翻译 #学习方法#学习方法#微信

孙叔敖举于海,百里奚举于市的翻译 1、孙叔敖举于海 孙叔敖,春秋时期鲁国大夫,是古代中国的著名政治家和军事家,他被誉为“孔子之后”的大贤。 孙叔敖的主要贡献在于他的外交策略和军事管理能力。在他的领导下,鲁国积极扩张其疆…

前端学习(三)之CSS

一、什么是CSS html定义网页的结构和信息(骨架血肉)css定义网页的样式(衣服)js定义用户和网页的交互逻辑(动作) 通过CSS,可以指定页面中各个元素的颜色、字体、大小、间距、边框、背景等样式&…

pig4cloud启动流程

环境 SpringBoot版本:2.7.16 SpringSecurity版本:5.7.11 pig4cloud版本:3.7.1-JDK8 流程图 概述 pig4cloud是对SpringSecurity的实现,其工作原理脱离不了SpringSecurity;pig4cloud启动首先SecurityAutoConfigurati…

9.11和9.9哪个大?

没问题 文心一言 通义千问

【前端】JavaScript入门及实战46-50

文章目录 46 对象(1)47 对象(2)48 属性名和属性值49 基本和引用数据类型50 对象字面量 46 对象(1) <!DOCTYPE html> <html> <head> <title></title> <meta charset "utf-8"> <script type"text/javascript">/…

Puromycin(嘌呤霉素)— pac基因筛选抗生素

Puromycin是由Streptomyces alboniger&#xff08;白黑链霉菌&#xff09;产生的一种氨基糖苷类抗生素&#xff0c;可抑制原核细胞和真核细胞的肽基转移。Puromycin可抑制革兰氏阳性菌、多种动物细胞和昆虫细胞的生长&#xff0c;但是真菌和革兰氏阴性菌对Puromycin具有抗性&am…

Spring Boot外部配置加载顺序

官网地址&#xff1a; Externalized Configuration :: Spring Boot Spring Boot外部配置加载顺序 Spring Boot使用一种非常特定的PropertySource顺序设计&#xff0c;以便合理地覆盖值。后面的属性源可以覆盖前面定义的值(后面的优先级高于前面的)。属性源的考虑顺序如下&…