MySQL跨表、多表更新SQL语句总结

MySQL跨表、多表更新SQL语句总结MySQL跨表、多表更新SQL语句总结

大家好,又见面了,我是你们的朋友全栈君。

单表更新
UPDATE table_name SET field1=new-value1, field2=new-value2 WHERE field=value
多表更新

情况一:

UPDATE userA as a , userB as b SET a.num = b.num*0.5 WHERE a.id = b.uid AND a.deleted_at is null;
UPDATE userA as a INNER JOIN userB as b ON a.id = b.uid SET a.num = b.num*0.5 WHERE AND a.deleted_at is null;

情况二:

UPDATE userA as a INNER JOIN userB as b ON a.id = b.uid SET a.num = b.num*0.5,a.state = 1 WHERE a.id = b.id 
AND a.deleted_at is null
AND (
	b.gb_name = 'a'
	OR b.gb_name = 'b'
	OR b.gb_name = 'c'
	OR b.gb_name = 'd'
	OR b.gb_name = 'e'
	OR b.gb_name = 'f'
	OR b.gb_name = 'g'
);

扩展:
inner join和where区别:
1 WHERE子句中使用的连接语句,在数据库语言中,被称为隐性连接。INNER JOIN……ON子句产生的连接称为显性连接。(其他JOIN参数也是显性连接)WHERE和INNER JOIN产生的连接关系,没有本质区别,结果也一样。但是!隐性连接随着数据库语言的规范和发展,已经逐渐被淘汰,比较新的数据库语言基本上已经抛弃了隐性连接,全部采用显性连接了。

2,测试结果inner join效率更快
事例:
Inner jion 原理:

SELECT
	*
FROM
	A
INNER JOIN B ON B.ID = A.ID
AND B.State = 1
INNER JOIN C ON B.ID = C.ID

where 原理:

SELECT
	*
FROM
	A
INNER JOIN B ON B.ID = A.ID
INNER JOIN C ON B.ID = C.ID
WHERE
	B.State = 1

INNER JOIN时会产生一个结果集,WHERE条件在这个结果集中再根据条件进行过滤。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/105820.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • nfs共享使用方法

    nfs共享使用方法

    2022年3月11日
    35
  • PID为0的系统空闲进程连接状态为TIME_WAIT

    PID为0的系统空闲进程连接状态为TIME_WAIT如果您使用命令提示符执行命令查看网络连接情况,您会发现,PID为0的SystemIdleProcess(系统空闲进程)将会出现很多网络端口占用情况。下面是一个示例:Proto LocalAddress     &nbs…

    2022年10月20日
    0
  • 华为技术专家居然把JVM内存模型讲解这么细致「建议收藏」

    华为技术专家居然把JVM内存模型讲解这么细致「建议收藏」全是干货的技术号:本文已收录在【github面试知识仓库】,欢迎star/fork:https://github.com/Wasabi1234/Java-Interview-Tutorial内存是非常重要的系统资源,是硬盘和CPU的中间仓库及桥梁,承载着os和应用程序的实时运行。JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM高效稳定运行。不同JVM对于内存的划分方式和管理机制存在差异。结合JVM虚拟机规范,来探讨经典JVM内存布局。JVM运行时数据区.

    2022年5月24日
    35
  • 修改tomcat启动窗口名称_重启tomcat命令

    修改tomcat启动窗口名称_重启tomcat命令Tomcat bin目录下用startup.bat启动Tomcat ,启动窗口显示的Title 更改方法如下:1 在bin目录下找到catalina.bat ,用文本模式打开2 找到 if “%TITLE%” == “” set TITLE=Tomcat 这句3 把 set TITLE=Tomcat 更改为 set TITLE=(想使用的名称包括中文) 即可。如图:…

    2022年8月19日
    11
  • 使用一个运放滤三次谐波 二阶有源带通滤波器的电路设计及波形效果

    使用一个运放滤三次谐波 二阶有源带通滤波器的电路设计及波形效果本文主要讲无限增益多路反馈有源带通滤波器的实现,工程实作,非理论知识,关于其他方法简略提,不做细究

    2022年5月2日
    100
  • 分布式文件存储选型比较[通俗易懂]

    分布式文件存储选型比较[通俗易懂]一、分布式文件存储的来源在这个数据爆炸的时代,产生的数据量不断地在攀升,从GB,TB,PB,ZB.挖掘其中数据的价值也是企业在不断地追求的终极目标。但是要想对海量的数据进行挖掘,首先要考虑的就是海量数据的存储问题,比如Tb量级的数据。谈到数据的存储,则不得不说的是磁盘的数据读写速度问题。早在上个世纪90年代初期,普通硬盘的可以存储的容量大概是1G左右,硬盘的读取速度大概为4.4MB/s.读取一张硬盘大概需要5分钟时间,但是如今硬盘的容量都在1TB左右了,相比扩展了近千倍。但是硬盘的读取速度大概是10

    2022年6月10日
    57

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号