mysql中You can't specify target table for update in FROM clause错误

原创 2017年01月03日 14:21:35
情景:执行删除【delete】语句时候,mysql中由于语法问题,导致sql会报错,提示错误信息是You can't specify target table for update in FROM clause;大体意思是无法指定“从”子句中更新的目标表.例如下列sql:

DELETE t
FROM
web_ri_plyedr_due t
WHERE
t.C_PLYEDRDUE_PK_ID in ( 
SELECT
MIN(q.C_PLYEDRDUE_PK_ID) 
FROM
web_ri_plyedr_due q
WHERE
q.C_PLY_NO = '1000001010001160000000007'

);


可以修改如下语句:


DELETE t
FROM
web_ri_plyedr_due t
WHERE
t.C_PLYEDRDUE_PK_ID =(SELECT w.id FROM(
SELECT
MIN(q.C_PLYEDRDUE_PK_ID)  AS id      ##--给字段起一个别名
FROM
web_ri_plyedr_due q
WHERE
q.C_PLY_NO = '1000001010001160000000007'

);


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

版权声明:本文为博主原创文章,未经博主允许不得转载。

sql经典面试题汇总(可以本地测试练习)

1.表名:number ID(number型) Name(varchar2型) 1 a 2 b 3 b 4 a 5 c 6 c 要求:执行一个删除语句,当Name列上有相同时,只保留ID这列上值小的...
  • tomcat_2014
  • tomcat_2014
  • 2016年11月29日 17:58
  • 702

mysql删除重复记录,保存Id最小的一条

方法1: 1、创建一个临时表,选取需要的数据。 2、清空原表。 3、临时表数据导入到原表。 4、删除临时表。 mysql> select * from student; +----+------+ |...
  • z69183787
  • z69183787
  • 2016年12月02日 18:59
  • 535

MySQL操作笔记(1)

1.MySQL登录--多实例登录方式,单实例不加-S参数;登录时尽量隐藏数据库密码。 [root@mysql ~]# mysql -S /data/3306/mysql.sock -u root -p...
  • lt53130640688
  • lt53130640688
  • 2015年11月09日 10:38
  • 1195

Linux的备份dump和恢复restore

备份命令:dump 用来备份ext2或者ext4文件系统,可以将目录或者这个文件系统备份到制定地方,或备份成一个打文件 dump [-cnu][-0123456789][-b ][-B ][-d ][...
  • sunyoop
  • sunyoop
  • 2017年10月18日 14:48
  • 171

MySQL SELECT同时UPDATE同一张表

MySQL不允许SELECT FROM后面指向用作UPDATE的表,有时候让人纠结。当然,有比创建无休止的临时表更好的办法。本文解释如何UPDATE一张表,同时在查询子句中使用SELECT. 问题描...
  • afeiqiang
  • afeiqiang
  • 2013年02月19日 01:05
  • 57884

redis 安装配置,主从服务器负载

你看到的这个文章来自于http://www.cnblogs.com/ayanmw redis 官网 http://redis.io/ 中文网站 http://redis.cn/ 谷歌代码的re...
  • zzy7075
  • zzy7075
  • 2014年11月19日 10:40
  • 4642

HBase shell 命令入门

HBase Shell经常用到的命令,入门必知必会呀
  • wzhg0508
  • wzhg0508
  • 2015年05月14日 15:42
  • 2761

记录Android Studio项目提交到github上的出错处理

首先是按照网上的教程进行了一次提交,具体见http://web.gxzj.com.cn/News.aspx?id=325505 记得当时出现过这个错误Can't connect to reposit...
  • anhenzhufeng
  • anhenzhufeng
  • 2015年12月08日 11:01
  • 2975

discuz学习笔记:以easyUI DataGrid为前台进行数据库增查删改操作

\bgtj_crud.php
  • bq_cui
  • bq_cui
  • 2016年12月20日 19:33
  • 522

MySQL 基础——「MySQL服务器锁和Innodb锁概述」

锁的概述 并发程序处理中,最基础也最重要的就是解决共享资源的争用,就是针对一个全局变量进行并发的更新和读取。这个全局变量,可以是一个全局计数器,统计某个事件在多线程中发生的次数。例如MySQL自增主...
  • luzhenyu111
  • luzhenyu111
  • 2017年12月20日 17:54
  • 33
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql中You can't specify target table for update in FROM clause错误
举报原因:
原因补充:

(最多只允许输入30个字)