网站首页 > 博客文章 正文
背景介绍
今天需要给一张表里面补数据,需要按照行的维度进行update,如果是个别数据那么直接写update语句就可以了,但是场景要求的是将整表的数据进行update,要实现这个需求就不能只靠蛮力了,需要有一点小技巧来完成这个工作。
实例演示
以下面的场景作为示例进行讲解:
学生表:
一张简单的学生表,其中记录了学生ID、名称、班级ID
?
借阅表:
一张简单的借阅表,当中记录了借阅的书籍和对应借阅学生ID,但是每行中的学生名称和班级ID是空的。
?
目标:快速生成update语句将book_borrow表中的student_name和class_id更新为正确的数据。
思路:
对于update操作,我们需要写出来一个这样的update语句,
update book_borrow set student_name = ?, class_id = ? where id = ?;
把update需要用的变量全部使用select查询出来。即,根据book_borrow表中的student_id,去student表中查出name和class_id。
select a.id,b.`name`,b.class_id from book_borrow a inner join student b on a.student_id = b.id;
两种解决方案
方案一:使用Mysql中的concat函数
对于concat函数,如果有不清楚的话建议阅读这篇文章 MySQL CONCAT() function - w3resource
上面我们查到了update语句中所有需要用到的变量。即,借阅ID、学生名称、班级ID,那么下一步我们只需要通过concat函数进行字符串拼接就可以了。
select concat("update book_borrow set student_name = '",b.`name`,"', class_id = ",b.class_id," where id = ",a.id,";") from book_borrow a inner join student b on a.student_id = b.id;
执行之后便是我们想要的结果了,如下图所示:
?
最后我们把sql拷出来直接执行就可以了。
方案二:使用正则表达完成匹配功能
select concat("update book_borrow set student_name = '",b.`name`,"', class_id = ",b.class_id," where id = ",a.id,";") from book_borrow a inner join student b on a.student_id = b.id;
将上面查询到的结果放到文本编辑器中,然后使用正则表达式来进行填充
?
正则表达式见下:
Find:(.*) (.*) (.*)
Replace:update book_borrow set student_name = '\2', class_id = \3 where id = 1;
效果图如下:
??
??
上面两种方式都可以达到我们的目的,但是推荐使用方案一,原因就在于简单快捷。
我是「翎野君」,感谢各位朋友的:点赞、收藏和评论,我们下期见。 ?
?
猜你喜欢
- 2024-09-12 Excel正则表达式:提取出负数的操作方法
- 2024-09-12 Excel正则表达式:一键提取带1-2位的正数或负数
- 2024-09-12 第45讲 正则表达式(下)(正则表达式^用法)
- 2024-09-12 使用awk和正则表达式过滤文本或字符串 - 详细指南和示例
- 2024-09-12 正则精要:玩转JS正则表达式,也许只需这一篇(建议收藏)
- 2024-09-12 Python|提取包含指定文本的行到一个文本文件(字符串或正则)
- 2024-09-12 Max-Norm正则化在哪些场景下比L1或L2正则化更有优势
- 2024-09-12 正则表达式lookahead或lookbehind了解了,写代码就不用捉急了
- 2024-09-12 高效文本处理之查找替换|各类工具+正则表达式或通配符使用
- 2024-09-12 正则表达式实现与或非关系(正则表达式或者用法)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)