mysql 报错 ,You can't specify target table <tbl> for update in FROM clause

You can‘t specify target table ‘表名‘ for update in FROM clause错误问题处理 You can't specify target table '表名' for update in FROM clause错误问题处理 阅读详情

mysql中You can't specify target table <tbl> for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。 例如下面这个sql:

delete from tbl where id in 
(
        select max(id) from tbl a where EXISTS
        (
            select 1 from tbl b where a.tac=b.tac group by tac HAVING count(1)>1
        )
        group by tac
)


改写成下面就行了:

delete from tbl where id in 
(
    select a.id from 
    (
        select max(id) id from tbl a where EXISTS
        (
            select 1 from tbl b where a.tac=b.tac group by tac HAVING count(1)>1
        )
        group by tac
    ) a
)

也就是说将select出的结果再通过中间表select一遍,这样就规避了错误。注意,这个问题只出现于mysql,mssql和oracle不会出现此问题。



mysql出现错误“ Every derived table must have its own alias”


Every derived table must have its own alias

这句话的意思是说每个派生出来的表都必须有一个自己的别名

一般在多表查询时,会出现此错误。

因为,进行嵌套查询的时候子查询出来的的结果是作为一个派生表来进行上一级的查询的,所以子查询的结果必须要有一个别名

把MySQL语句改成:select count(*) from (select * from ……) as total;

问题就解决了,虽然只加了一个没有任何作用的别名total,但这个别名是必须的




MySQL出现You can‘t specify target table for update in FROM clause错误的解决方法 在MySQL中,可能会遇到You can't specify target table '表名' for update in FROM clause这样的错误。它的意思是说,不能在同一语句中,先select出同一表中的某些值,再update这个表,即不能依据某字段值做判断再来更新某字段的值。这个问题在MySQL官网中有提到解决方案:MySQL-UPDATE- 拉到文档下面。我想将每个用户第一条消息的内容更新为Hello World。例如下面这张t_message表。 阅读详情

相关推荐

ArcGIS 10.2 保姆级安装与破解教程(含License Manager启动失败解决方案)

本文提供ArcGIS 10.2中文版的保姆级安装与破解教程,详细讲解从环境检查到License Manager配置的全流程,特别针对License Manager启动失败等常见问题提供专业解决方案,帮助用户顺利完成地理信息系统软件的安装与激活。

weixin_26757925的博客 1182

You can‘t specify target table ‘region‘ for update in FROM clause

首先明确一点这个错误只会发生在`delete`语句或者`update`语句,拿update来举例 : `update A表 set A列 = (select B列 from A表);` 这种写法就会报这个错误,原因:你又要修改A表,然后又要从A表查数据,而且还是同层级。Mysql就会认为是语法错误!嵌套一层就可以解决,`update A表 set A列 = (select a.B列 from (select * from A表) a);`

怪咖@的博客 6667

Cesium中实现阴影率分析

看到群里有人在研究这个,所以看了一下。主要是模仿超图的,实现原理超图有做回答:但其实超图的这个实现方式还是过于复杂,原因是:既然是获取太阳的日照阴影,而Cesium中原本就存在太阳,且能投射阴影,因此其实并不需要再次计算太阳位置并计算视锥获取深度图,直接使用Cesium原生的太阳深度图即可。

weixin_43481439的博客 2217

1093 - You can‘t specify target table 报错原因分析及解决办法

1093 - You can't specify target table 1093 原因分析及解决办法

ᶻᶻᶻ 枕星河的博客 5908

推荐系统(1):推荐系统评测

对于可以离线优化的指标,我个人的看法是应该在给定覆盖率、多样性、新颖性等限制条件下,尽量优化预测准确度。用一个数学公式表达,离线实验的优化目标是:最大化预测准确度使得 覆盖率 > A多样性 > B新颖性 > C其中,A、B、C的取值应该视不同的应用而定。

数据不会骗人 2527

【抖音】a_bogus参数逆向分析

点击——展开xxx条回复﹀就会出现。可以看到这个栈是有请求相关的数据的。所以就是在bdms.js里面生成的。

qq_44990881的博客 3000

mysql中You can't specify target table <tbl> for update in FROM clause报错

mysql中You can't specify target table &lt;tbl&gt; for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。 例如下面这个sql:delete from tbl where id in(        select max(id) from tbl a where E...

u013782879的博客 225

详解岭回归与L2正则化

最小二乘法存在不可逆和病态问题,导致解析解不可计算或不稳定,岭回归是一种有效的解决方法,以损失无偏性来换取稳定解, 本文介绍详细介绍了岭回归的基本原理,并从L2正则化角度来进行了解释。

Luoyingfeng的博客 1万+

mysql 中 You can't specify target table <tbl> for update in FROM clause 错误解决方法

You can’t specify target table tbl for update in FROM clause 在mysql中当在一句sql中先后执行对同一张表的select 和 update 或 delete 操作时,就会报错: You can't specify target table tbl for update in FROM clause 例如: update t...

demon的专栏 681

从“烧电路”到“软杀伤”:拆解高功率微波(HPM)让无人机失灵的三种物理效应

本文深度解析高功率微波(HPM)如何通过热效应、电磁效应和非线性效应三种物理机制使无人机失灵。从电子元件的热损伤到系统的电磁干扰,再到电路中的非线性破坏,HPM技术为反无人机系统提供了高效的非动能打击手段。文章还探讨了现代无人机的多层级防护策略与应对方案。

weixin_42531886的博客 253

Unreal5从入门到精通 专栏目录

欢迎来到“UE5从入门到精通”专栏!在这里,我们将带您踏上一段精彩的旅程,深入探索虚幻引擎5(Unreal Engine 5)的无限可能。不论您是游戏开发的新手,还是希望提升技能的开发者,这里都有适合您的内容。基础知识:了解虚幻引擎5的界面、功能和基本操作,为您的学习打下坚实的基础。项目实战:通过实际项目案例,帮助您从理论走向实践,真实体验游戏开发的每个环节。高级技巧:分享各种高级功能和技巧,包括蓝图、C++编程、材质编辑、光照和渲染等,让您能够创作出更具专业水准的作品。

TxNet 2988

MySQL 报错 You can‘t specify target table for update in FROM clause解决办法

You can’t specify target table for update in FROM clause含义:不能在同一表中查询的数据作为同一表的更新数据。也就是说将select出的结果再通过中间表select一遍,这样就规避了错误。原文链接:https://blog.youkuaiyun.com/zzddada/article/details/112665298。我想查询t_user_asset的余额加上50000作为更新字段f_cashAmount的值,这样写是不行的。

s_156的博客 2万+

树根互联Java开发面试题及参考答案

说一下 Java 集合类。 Java 集合类是用于存储和操作一组对象的容器。它提供了多种数据结构,方便程序员对数据进行高效的管理和处理。 Java 集合框架主要包括两大接口:Collection 和 Map。 Collection 接口是一组对象的集合,它有三个主要的子接口:List、Set 和 Queue。 List 接口代表有序的集合,可以包含重复的元素。例如 ArrayList,它是基于数组实现的动态数组。它的优点是随机访问效率高,通过索引访问元素的时间复杂度为 O (1)。当

大模型大数据攻城狮的专栏 856

mysql出现“ You can't specify target table '表名' for update in FROM clause”解决方法

You can't specify target table '表名' for update in FROM clause 翻译为:不能先select出同一表中的某些值,再update这个表(在同一语句中)   实例: 表:result 表student   表:grade 要求:给大一成绩不合格的分数加5分   思路: 第一步:查询出大一成绩不合格的成绩集合 ...

PoetsSociety的博客 13万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Mysql 报错 You can‘t specify target table ‘表名‘ for update in FROM clause

翻译为:不能先select出同一表中的某些值,再update这个表(在同一语句中)多半是update在where条件后又Select了一次,所以报错。后面子查询再查询一次即可。

Demolist的博客 2318

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【MySQL-Bug】MySQL 出现 You can‘t specify target table for update in FROM clause 错误的解决方法

在 MySQL 中,可能会遇到 You can't specify target table '表名' for update in FROM clause 这样的错误 它的意思是说,不能在同一语句中,先 select 出同一表中的某些值,再 update 这个表,即不能依据某字段值做判断再来更新某字段的值。 解决方法:select 的结果再通过一个中间表 select 多一次,就可以避免这个错误。

weixin_53543905的博客 4114

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SQL报错:You can’t specify target table ‘person’ for update in FROM clause的解决方法

SQL报错:You can’t specify target table ‘person’ for update in FROM clause的解决方法

weixin_45928967的博客 2086

You can‘t specify target table for update in FROM clause

记录今天执行SQL报错You can't specify target table 'l' for update in FROM clause 意思是说:对同一张表不能查出某些值,在同时更新这张表的值,这样MySQL语法是不支持的。 错误写法: UPDATE t_user l SET l.user_name = (SELECT t.user_name FROM t_user t), l.update_time = now() WHERE l.id = 'U0123456789'; 正确写法.

aayygg1234的专栏 2691

You can‘t specify target table ‘表名‘ for update in FROM clause错误

update 同表子查询筛选的数据时的注意事项

m0_56166876的博客 3824

MYSQL错误代码: 1093 You can‘t specify target table ‘sc‘ for update in FROM clause

MYSQL错误代码: 1093 You can't specify target table 'sc' for update in FROM clause

qq_42063322的博客 8432

mysql 出现You can‘t specify target table for update in FROM clause错误的解决方法

日志报错: mysql出现You can’t specify target table for update in FROM clause 意思是不能在同一个sql语句中,先select同一个表的某些值,然后再delete/update这个表。 报错sql: 解决办法: select的结果再通过一个中间表多select一次,避免这个错误 ...

JS_XiaoBaiShu的博客 1057

解决MySQL错误:You can‘t specify target table ‘xxx‘ for update in FROM clause

核心问题:避免在同一语句中同时修改和查询同一张表推荐方法:优先使用派生表或JOIN,简洁高效;临时表适合复杂逻辑设计建议:在编写SQL时,尽量预先规划数据操作路径,减少子查询对目标表的直接依赖。

从基础到源码解析的学习记录 6471

mysql: you can't specify target table 问题解决

首先创建一个表: CREATE TABLE `t1` ( `id` INT(11) NULL DEFAULT NULL, `name` VARCHAR(20) NULL DEFAULT NULL ) 插入几条数据: mysql> select * from t1; +------+------+ | id | name | +------+------+ | 1 | ch...

weixin_42608550的博客 8959

You can't specify target table for update in FROM clause

You can't specify target table '表名' for update in FROM clause 翻译为:不能先select出同一表中的某些值,再update这个表(在同一语句中) 错误写法: UPDATE snc_visualpanel_tree SET node_type = '1' WHERE parentid IN ( SELE...

weberhuangxingbo的博客 2674
上一篇: sqlmap namespace ibatis 加载
下一篇: com.atomikos.icatch.HeurHazardException: Heuristic Exception
叶瑾g
博客等级 码龄12年 3粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值