mysql update使用子查询-阿里云开发者社区

开发者社区> benben_3er> 正文

mysql update使用子查询

简介: <div class="markdown_views"> <p>今天我像以前操作Oracle写了一个update sql:</p> <pre class="prettyprint"><code class=" hljs sql"><span class="hljs-operator"><span class="hljs-keyword">update</span> dev
+关注继续查看

今天我像以前操作Oracle写了一个update sql:

update device_user a set a.scene_id=null 
where a.id not in(select min(t.id) from device_user t group by t.device_id);

根据子查询的结果,更新表中的一个字段。

在mysql数据库中执行后报错:

Error Code: 1093. You can't specify target table 'a' for update in FROM clause

一直没弄明白这个错误,然后经过多次度娘后,发现mysql update时,更新的表不能在set和where中用于子查询。

修改上面的sql为mysql数据库支持的方式:

update device_user du, 
(select id from device_user where id not in(select min(t.id) from device_user t group by t.device_id)) b 
set du.scene_id=null 
where du.id=b.id;

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
java 数据库查询Date类型字段 没有了时分秒 全为 00 的解决办法
数据库查询时间没有了时分秒的解决办法        问题出处,公司一个项目中使用动态sql方式查询Oracle数据库,在展示时Date类型字段只展示日期,无时分秒。        分析:        1、众所周知Oralce的日期类型有很多种,Date ,Timestamp等。
1120 0
MySql 使用explain分析查询
今天写了个慢到哭的查询,想用explain分析下执行计划,后来发现explain也是有局限性的: EXPLAIN不会告诉你关于触发器、存储过程的信息或用户自定义函数对查询的影响情况 •EXPLAIN不考虑各种Cache •EXPLAIN不能显示MySQL在执行查询时所作的优化工作 •部分统计信息是估算的,并非精确值 •EXPALIN只能解释SELECT操作,其他操作要重写为SELECT后查看执行计划 好吧,那我就把存储过程,转换为普通sql进行分析。
873 0
PolarDB-X 1.0-SQL 手册-DML-子查询
本文介绍PolarDB-X支持的子查询类别及在PolarDB-X中使用子查询的相关限制和注意事项。
14 0
Access中使用sql查询
在ACCESS中使用SQL查询语句检查SQL语法时非常有用。 操作步骤如下: 【创建】->【查询设计】 直接关闭弹出的【显示表】 找到【SQL视图】: 在查询命令窗口输入命令,然后执行运行命令。
692 0
kbmmw 中JSON 中使用SQL 查询
前面讲到了kbmmw 的JSON 对象操作,如何快速的查找JSON 中的值? 一种办法就是通过遍历的方法,其实在kbmmw 还有一种灵活的查询方式, 就是通过SQL 方式查询JSON 中的值。也就是说用TKbmmwmemSQL 控件来实现。
913 0
+关注
benben_3er
专注开发...
151
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载