update语句set可以子查询嘛(mysql 不支持 update 子查询更新)

:暂无数据 2026-06-27 14:50:01 :0

update语句set可以子查询嘛(mysql 不支持 update 子查询更新)

其实update语句set可以子查询嘛的问题并不复杂,但是又很多的朋友都不太了解mysql 不支持 update 子查询更新,因此呢,今天小编就来为大家分享update语句set可以子查询嘛的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

本文目录

mysql 不支持 update 子查询更新

update 时,更新的表不能在set和where中用于子查询;

update 时,可以对多个表进行更新(sqlserver不行);

你这个问题 可以使用3元计算的方法来解决 

没超过100分的 低于80 加5 小于等于98  +2  否则+1

update result set  studentresult =IF(studentresult《80,studentresult+2,
if(studentresult《=98,studentresult+2,studentresult+1))  where studentresult《100
and  subjectname=’深入.NET平台和C#编程’

代码结果测试了

注意 result: 表名  studentresult :字段名  subjectname:科目名

MYSQL的UPDATE子查询,UPDATE时避免使用子查询

近日写mysql储存过程的时候,有个SQL执行不动:
UPDATE t_csi_comment

SET is_valid = 0

WHERE

comment_id IN (

SELECT

comment_id

FROM

(

SELECT

*

FROM

t_csi_comment

WHERE

DATE_FORMAT(comment_time, ’%Y%m%d’) BETWEEN 20170425

AND 20170528

ORDER BY

comment_id DESC

) a

GROUP BY

openid,

dlr_code

HAVING

count(1) 》 2

);

很奇怪,按道理这条SQL的检索量小于10W,应该怎么慢也不会几分钟不动的地步。

单独执行子查询:

SELECT

comment_id

FROM

(

SELECT

*

FROM

t_csi_comment

WHERE

DATE_FORMAT(comment_time, ’%Y%m%d’) BETWEEN 20170425

AND 20170528

ORDER BY

comment_id DESC

) a

GROUP BY

openid,

dlr_code

HAVING

count(1) 》 2;

结果比想象中的快,1秒都不到,EXPLAIN后检索量不到4W行。我就郁闷了。

EXPLANIN第一条update语句:

注意:select_type 里出现了 DEPENDENT SUBQUERY。

这意味着什么?——子查询取决于外面的查询,Mysql

先执行外查询,内查询根据这个查询结果(如执行计划里所述,38196

rows)的每一条记录组成新的查询语句后执行。多重子查询情况下,我已经不想去解析它是如何转换SQL了。  Mysql在这点上并不比人类聪明。

解决办法(子查询转换成联表查询):

UPDATE t_csi_comment a INNER JOIN

(

SELECT

comment_id

FROM

(

SELECT

*

FROM

t_csi_comment

WHERE

DATE_FORMAT(comment_time, ’%Y%m%d’) BETWEEN 20170425

AND 20170528

ORDER BY

comment_id DESC

) a

GROUP BY

openid,

dlr_code

HAVING

count(1) 》 2

) b ON a.comment_id = b.comment_id;

SET a.is_valid = 0

毫秒级别完工。

按理说,越复杂的程序逻辑关系要越明朗,出现复杂SQL的几率要越低。但是总会有一块业务相对复杂多变,无法把控,或者就是整个系统的架构不够明朗,脱离不了复杂SQL。这是在UPDATE时发现的子查询问题,在其它SQL语句中肯定也会有所体现,这是Mysql的查询机制问题,子查询会让Mysql变笨。所以还是慎用子查询,各种复杂SQL下尽量先测试吧。

mysql,update目标表子查询问题期待

这个例外不解决你的问题
《br》
《br》
《br》update 学生 set 奖学金=
《br》(select 姓名 from 学生
《br》where 奖学金 is null and 分数=100
《br》);
《br》
《br》这样的是被允许的
《br》
《br》mysql对子查询的支持是比较薄弱的
就是说 update的where语句中不能子查询
而在 where之前是可以有子查询的

请教一条sql语句,更新一个字段,更新值来至于子查询

--SQL Server:
update 表A set a字段=表B.a字段
from 表B inner join 表A on 表A.主键=表B.主键
--MySQL:
update 表A inner join 表B on 表A.主键=表B.主键 set a字段=表B.a字段

注: 表B可以是一个子表查询

oracle中的update语句能用相关子查询么

update table1 a set a.name = (select b.name from table2 where a.id=b.id and rownum=1 );
其实要按你的具体需求而定。
步骤多,但效率比较高:
1、create table 临时表 value (select a.id,a.name,b.name,... from table1 a,table2 b where a.id=b.id)
2、删除table1中的记录,不要drop
3、insert into table1 select 你需要的字段 from 临时表。

update :UPDATE SET 表达式必须是子查询

ORACLE 关连更新 update select
UPDATE M_VEH_CHARGE_REAL
SET (
项目
) = SELECT
(
项目
FROM
(
。。。
) B
JOIN (
。。。
) C ON B.rn = C.rn
where M_VEH_CHARGE_REAL.关联字段 = B 或者 C的某个字段
) WHERE EXISTS (
SELECT 1 FROM
(
。。。
) B
JOIN (
。。。
) C ON B.rn = C.rn
where M_VEH_CHARGE_REAL.关联字段 = B 或者 C的某个字段
)
B 和 C 的子查询省略了 ,关联字段可能有多个,不懂再问

关于update语句set可以子查询嘛到此分享完毕,希望能帮助到您。

update语句set可以子查询嘛(mysql 不支持 update 子查询更新)

本文编辑:admin

更多文章:


mariadb忘记密码(mysql用户密码忘记了怎么办)

mariadb忘记密码(mysql用户密码忘记了怎么办)

大家好,mariadb忘记密码相信很多的网友都不是很明白,包括mysql用户密码忘记了怎么办也是一样,不过没有关系,接下来就来为大家分享关于mariadb忘记密码和mysql用户密码忘记了怎么办的一些知识点,大家可以关注收藏,免得下次来找不

2026年10月15日 07:50

mysql端口号(如何查看自己数据库的端口号)

mysql端口号(如何查看自己数据库的端口号)

“mysql端口号”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看mysql端口号(如何查看自己数据库的端口号)!

2026年10月15日 06:30

printf打印16进制(C语言 十六进制怎么输出)

printf打印16进制(C语言 十六进制怎么输出)

大家好,今天小编来为大家解答以下的问题,关于printf打印16进制,C语言 十六进制怎么输出这个很多人还不知道,现在让我们一起来看看吧!

2026年10月15日 06:00

avantage怎么设置为中文(Avantage安装丢失GIT)

avantage怎么设置为中文(Avantage安装丢失GIT)

大家好,如果您还对avantage怎么设置为中文不太了解,没有关系,今天就由本站为大家分享avantage怎么设置为中文的知识,包括Avantage安装丢失GIT的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月15日 03:00

ospf协议的作用是什么(OSPF路由协议的作用是什么)

ospf协议的作用是什么(OSPF路由协议的作用是什么)

“ospf协议的作用是什么”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看ospf协议的作用是什么(OSPF路由协议的作用是什么)!

2026年10月15日 02:40

方案对比特效js(在一个网页中如何实现两个JS特效)

方案对比特效js(在一个网页中如何实现两个JS特效)

各位老铁们好,相信很多人对方案对比特效js都不是特别的了解,因此呢,今天就来为大家分享下关于方案对比特效js以及在一个网页中如何实现两个JS特效的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月15日 02:10

activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)

activex控件未注册怎么办(登陆视频监控网页时提示activex控件未注册,怎么解决)

今天给各位分享登陆视频监控网页时提示activex控件未注册,怎么解决的知识,其中也会对登陆视频监控网页时提示activex控件未注册,怎么解决进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月14日 20:30

学生信息管理系统c语言(用C语言编程学生信息管理系统!)

学生信息管理系统c语言(用C语言编程学生信息管理系统!)

今天给各位分享用C语言编程学生信息管理系统!的知识,其中也会对用C语言编程学生信息管理系统!进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月14日 20:20

excel连接sql数据库教程(excel怎么连接sql数据库)

excel连接sql数据库教程(excel怎么连接sql数据库)

本篇文章给大家谈谈excel连接sql数据库教程,以及excel怎么连接sql数据库对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月14日 19:40

null s brawl(null和空字符有区别吗)

null s brawl(null和空字符有区别吗)

今天给各位分享null和空字符有区别吗的知识,其中也会对null和空字符有区别吗进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月14日 19:00

最近更新

可信验证系统(什么是可信云认证)
2026-10-15 10:00:23 浏览:0
广告推广app(常见的app推广方式)
2026-10-15 09:20:01 浏览:0
热刺vs马赛比赛(热刺赛程比分)
2026-10-15 09:10:01 浏览:0
热门文章

标签列表