-
mysql update 嵌套select_简要分析MySQL update嵌套select问题
2021-01-20 12:38:32本文主要向大家介绍了MySQL update嵌套select问题,通过具体的实例让大家了解,希望对大家学习MySQL有所帮助。当你希望更新一批值,且值是通过select条件查询出来时,下面这个错误应该不陌生You can’t specify ...本文主要向大家介绍了MySQL update嵌套select问题,通过具体的实例让大家了解,希望对大家学习MySQL有所帮助。
当你希望更新一批值,且值是通过select条件查询出来时,下面这个错误应该不陌生
You can’t specify target table ‘x’ for update in FROM clause。
错误示范 1: A B 有关联同一个key_id , 根据 B表符合条件 -> 更新A表val值。UPDATE A a SET a.val = 2
WHERE a.id IN ( SELECT a.id FROM A
LEFT JOIN B ON b.key_id = a.key_id
WHERE b.satisfy = 1)
解决思路 1: 使用 INNER JOIN (最简洁)UPDATE A a INNET JOIN B b ON b.key_id = a.key_id
SET a.val = 2 WHERE b.satisfy = 1
解决思路 2:UPDATE A a, (SELECT A.id from A
LEFT JOIN B ON B.key_id= A.key_id
WHERE B.satisfy = 1) b
SET a.val = 2
WHERE a.id = b.id
本文由职坐标整理并发布,希望对同学们学习MySQL有所帮助,更多内容请关注职坐标数据库MySQL数据库频道!
-
mysql update 嵌套select_UPDATE和SELECT嵌套使用
2021-01-25 12:07:45UVA 11168 Airport(凸包+直线方程)题意:给你n[1,10000]个点,求出一条直线,让所有的点都在都在直线的一侧并且到直线的距离总和最小,输出最小平均值(最小值除以点数) 题解:根据题意可以知道任意角度画一条...UVA 11168 Airport(凸包+直线方程)
题意:给你n[1,10000]个点,求出一条直线,让所有的点都在都在直线的一侧并且到直线的距离总和最小,输出最小平均值(最小值除以点数) 题解:根据题意可以知道任意角度画一条直线(所有点都在一边),然 ...
MySQL学习笔记九:存储过程,存储函数,触发器
存储过程 1.存储过程由一组特定功能的SQL语句组成,对于大型应用程序优势较大,相对不使用存储过程,具有以下优点: a.性能提高,因为存储过程是预编译的,只需编译一次,以后调用就不须再编译 b.重用性 ...
纯jsp用户登录系统
用纯jsp技术实现用户登录系统,需要用到三个.jsp文件.在文本目录下新建三个.jsp文件,分别命名为login.jsp,logincl.jsp和wel.jsp. 1.login.jsp文件用来放界面 ...
@RestController注解下返回到jsp视图页面
spring4.1中添加了@RestController注解很方便,集成了@ResponseBody注解,无需再在每个方法前添加了..但是却发现个问题..之前用@Controller注解的时候经常会如 ...
IEnumerable和IQueryable的区别
转自:http://www.cnblogs.com/fly_dragon/archive/2011/02/21/1959933.html IEnumerable接口 公开枚举器,该枚举器支持在指定类型 ...
Maven仓库构建
什么是Maven仓库 在不用Maven的时候,比如说以前我们用Ant构建项目,在项目目录下,往往会看到一个名为/lib的子目录,那里存放着各类第三方依赖jar文件,如log4j.jar,junit.j ...
Java开发十大常用网站
Stackoverflow:有成千上万个好问题和答案 DZone:有相当多的开发者在这个网站上分享他们博客文章 LeetCode:如果有Java方面的面试问题可在教程中找到答案 Java SE技术文档 ...
How to create a zip file in NetSuite SuiteScript 2.0 如何在现有SuiteScript中创建和下载ZIP压缩文档
Background We all knows that: NetSuite filecabinet provided a feature to download a folder to a zip ...
TIME_WAIT 另一种解决方式 SO_LINGER
被TIME_WAIT问题烦得不行,又发现了另一种解决方式,SO_LINGER. 对SO_LINGER解释最通用的自然是,现摘录如下 SO_LINGE ...
-
mysql update 嵌套_Mysql update语句赋值嵌套select
2021-01-19 00:22:18MySQL课程练习中题目遇到Mysql update语句赋值嵌套select语句如下:update tc_sc set score=(select avg(tc_sc.score) from tc_sc,tb_teacher,tb_course where tc_sc.cid=tb_course.cid and tb_course.tid=tb_...MySQL课程练习中题目遇到Mysql update语句赋值嵌套select
语句如下:
update tc_sc set score=(select avg(tc_sc.score) from tc_sc,tb_teacher,tb_course where tc_sc.cid=tb_course.cid and tb_course.tid=tb_teacher.tid and tb_teacher.tname='fp') where cid=(select tc_sc.cid from tb_teacher,tb_course,tc_sc where tc_sc.cid=tb_course.cid and tb_course.tid=tb_teacher.tid and tb_teacher.tname='fp' group by tc_sc.cid);
出现问题:
ERROR 1093 (HY000): You can't specify target table 'tc_sc' for update in FROM clause
查询问题原因在于mysql 定义update语句不能同时对同一张进行set 赋值操作,也就是说 update a 的时候 不能在后面select col from a ,如果是不同表操作是没有问题的。
最后的解决方案是通过别名避免同表的问题:
update tc_sc set score=(select avg(tc_sc.score) from (select * from tc_sc) as temp1,tb_teacher,tb_course where tc_sc.cid=tb_course.cid and tb_course.tid=tb_teacher.tid and tb_teacher.tname='fp') where cid=(select tc_sc.cid from tb_teacher,tb_course,(select * from tc_sc) as temp2 where tc_sc.cid=tb_course.cid and tb_course.tid=tb_teacher.tid and tb_teacher.tname='fp' group by tc_sc.cid);
注意其中的这两句
(select * from tc_sc) as temp1
(select * from tc_sc) as temp2
是避免问题的关键。
-
MySQL update 嵌套 select
2017-09-25 18:11:30当你希望更新一批值,且值是通过select条件查询出来时,下面这个错误应该不陌生 You can’t specify target table ‘x’ for update in FROM clause。 错误示范 1: A B 有关联同一个key_id , 根据 B表符合条件 ->...当你希望更新一批值,且值是通过select条件查询出来时,下面这个错误应该不陌生
You can’t specify target table ‘x’ for update in FROM clause。
错误示范 1: A B 有关联同一个key_id , 根据 B表符合条件 -> 更新A表val值。
UPDATE A a SET a.val = 2 WHERE a.id IN ( SELECT a.id FROM A LEFT JOIN B ON b.key_id = a.key_id WHERE b.satisfy = 1)
解决思路 1: 使用 INNER JOIN (最简洁)
UPDATE A a INNER JOIN B b ON b.key_id = a.key_id SET a.val = 2 WHERE b.satisfy = 1
解决思路 2:
UPDATE A a, (SELECT A.id from A LEFT JOIN B ON B.key_id= A.key_id WHERE B.satisfy = 1) b SET a.val = 2 WHERE a.id = b.id
-
Mysql 的update里嵌套select,并且该select再嵌套一个select
2019-06-21 11:13:46因为update里嵌套select的时候,select的from后的目标表,不能是,update的目标表,上面update和select里的from都用到了student_course表,所以应该在select上再嵌套一个select,如下 update student_course set ... -
MySql Update Select 嵌套
2014-12-25 11:39:00UPDATE `TB_CM_Dic` SET `ParentID` = (SELECT `ID` FROM (SELECT * FROM `TB_CM_Dic`) AS B WHERE `DicName` = '药品类别') WHERE `ID` = ( SELECT `ID` FROM( SELECT * FROM `TB_CM_... -
PG SQL update 嵌套select写法
2016-11-10 10:30:03需要将自己平时遇到的问题总结成经验出来。 PG 需要将A表中的某个字段值更新到B表中去,写法是这样,比oracle更简单. ...updatehmcp_health_checkup_item b set organ_id = a.organ_id fromhmcp_health_checkup_... -
update嵌套两个select
2012-11-24 18:55:49update t_inf_tmp tmp set (orignal_useragent, orignal_date)= ( select useragent, insertdate from( select useragent, insertdate from v_his_all his where his.isdn=tmp.isdn and his.insertdate&... -
UPDATE和SELECT嵌套使用
2016-02-29 16:18:001 2 update a set HIGH=b.NEW from SPEC1 a,tmpDOT b where a.high=b.old -
SQL UPDATE嵌套使用
2019-02-22 18:29:00遇见的问题 1.更新语句,更新字段 UPDATE number SET sumab = 2 WHERE id =1 求和 SELECT SUM(num_a+num_b)FROM number WHERE ...MySQL不允许SELECT FROM后面指向用作UPDATE的表 既然MySQL是通过临时表来实现F... -
MySQL update嵌套
2013-03-25 10:22:50当我们想从MySQL中的表table1中取出id=5的列col1(例如: 博客当前访问量)中的数据d1, 并将...update table1 set col1=(select col1 from a where id=5)+1 where id=5; 但在 MySQL 命令列工具中传回: ER -
MySQL update语句嵌套select语句同一张表
2017-08-11 14:06:27今天在更新一条记录时,突然发现自己竟然连update时嵌套使用select都不会用。摸索着写了一条,还报错了。类似如下CREATE TABLE t3( num1 SMALLINT, num2 SMALLINT );INSERT INTO t3 VALUES(20,10),(30,40); num1 ... -
Mysql update语句赋值嵌套select
2013-09-08 14:43:30Mysql update语句赋值嵌套select Java代码 update a set col=(select col from a where id='5') where id>5 and id www.2cto.com 报错了 ERROR 1093 (HY000): You can't specify ... -
mysql update 嵌套_Mysql update语句赋值嵌套与在表列中数据后面增加数据
2021-01-19 00:22:18concat_ws()函数, 表示concat with separator,即有分隔符的字符串连接... select concat_ws(',','11','22','33');+-------------------------------+| concat_ws(',','11','22','33') |+---------------------------... -
Update Select 嵌套更新或批量更新一句SQL语句搞定
2015-02-15 13:11:01有两个表:SPEC1、tmpDOT SPEC1种一列为:HIGH tmpDOT共有两个:OLD、NEW .............................................update a set HIGH=b.NEW ... set high = (select new from tmpdot where old=a.high ) from spec1 a -
Mysql update语句赋值嵌套select
2013-03-06 11:45:38[code="java"]update a set col=(select col from a where id='5') where id>5 and id -
select查询中嵌套update操作,可有人能用一条SQL实现?
2018-10-29 11:44:19select * from 表 where id = 1; update 表 set reading = reading =1 where id = 1; 这两条SQL是在一张表中,我要先进行update操作,然后再进行查询操作。 -
在UPDATE嵌套表更新数据
2007-09-19 20:18:00分享一个UPDATE语句中使用FROM的SQL语句:以下例子供大家学习:BBS表的表结构SQL语句:if exists (select * from dbo.sysobjects where id = object_id(N[dbo].[bbs]) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop ... -
mysql insert嵌套select_mysql之UPDATE,SELECT,INSERT语法
2021-03-03 18:30:07一 :UPDATE语法#单表语法(常用)UPDATE [LOW_PRIORITY] [IGNORE] table_referenceSET assignment_list[WHERE where_condition][ORDER BY ...] #例如 ORDER BY id DESC; 若ID不重复且自增,故需要先增加的最大的id后...