MySQL can’t specify target table for update in FROM clause错误解决

原创 2016年08月30日 17:28:33

今天想删除同一张表中重负数据时遇到“MySQL can’t specify target table for update in FROM clause”的错误,在百度上找了很久没有找到好的解决方案,于是用Google搜了一下随便点开一个秒解  原因就是

mysql版本低  不能先select出同一表中的某些值,再update这个表(在同一语句中) 

解决方案http://www.codeproject.com/Tips/831164/MySQL-can-t-specify-target-table-for-update-in-FRO


两次写的sql对比:

低版本mysql不能执行的sql

delete from ApAppDownloadData
WHERE ApAppDownloadData.recordTime 
IN ( 
    SELECT f.recordTime
    FROM ApAppDownloadData f group by f.recordTime having count(1) > 1
)
AND ApAppDownloadData.id not in (
	SELECT min(g.id)
	FROM ApAppDownloadData g group by g.recordTime having count(1) > 1
)

修改后sql

delete from ApAppDownloadData
WHERE ApAppDownloadData.recordTime 
IN ( 
    SELECT * FROM ( SELECT f.recordTime
    FROM ApAppDownloadData f group by f.recordTime having count(1) > 1) aa
)
AND ApAppDownloadData.id not in (
    SELECT * FROM ( SELECT min(g.id)
    FROM ApAppDownloadData g group by g.recordTime having count(1) > 1) bb
)


在本次操作中也遇到过这个错误“ Every derived table must have its own alias

Everyderived表必须有这句话本身的别名
意思是说,每一个派生表必须有它自己的别名
一般在一个多表查询时,就会发生这个错误。 

因为,出了子查询结果时,嵌套查询作为一个派生表,检查水平,所以子查询的结果必须有一个别名
更改MySQL语句:selectcount(*)从(SELECT * FROM ......)为总; 
问题是解决了,虽然只是增加了一个没有效果的别名总量,但这个别名是必需的


mark一下以后再有类似问题要注意


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

MySQL 中 You can't specify target table '表名' for update in FROM clause错误解决办法

在MySQL中,写SQL语句的时候 ,可能会遇到You can't specify target table '表名' for update in FROM clause这样的错误,它的意思是说,不能...
  • qq_29672495
  • qq_29672495
  • 2017年05月23日 22:32
  • 4139

MySQL can’t specify target table for update in FROM clause

翻译:MySQL不能指定更新的目标表在FROM子句 源SQL语句: delete from t_official_sys_user where USER_NAME IN(SELECT USER_NAM...
  • bluestarf
  • bluestarf
  • 2015年06月24日 15:22
  • 7454

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

本文将介绍mysql出现You can't specify target table for update in FROM clause错误的原因及解决方法。...
  • fdipzone
  • fdipzone
  • 2016年09月28日 23:39
  • 26007

mysql You can't specify target table for update in FROM clause异常问题.

这个问题在ORACLE是不会发生的,但是如果你使用的MYSQL,如果你在更新一个表的数据并且这个表的条件还是这个表的就会出现这个问题,比如: UPDATE sys_datadict sd  set s...
  • xun573017588
  • xun573017588
  • 2017年04月19日 10:55
  • 249

MYSQL之You can't specify target table for update in FROM clause解决办法

You can't specify target table for update in FROM clause含义:不能在同一表中查询的数据作为同一表的更新数据。 例如: 我想查询t_user_as...
  • yhl_jxy
  • yhl_jxy
  • 2016年03月11日 16:12
  • 7196

[Err] 1093 - You can't specify target table 's' for update in FROM clause

[Err] 1093 - You can't specify target table 's' for update in FROM clause 执行SQL语句时出现这个错误。原因是在更新这个表和...
  • yaerfeng
  • yaerfeng
  • 2012年08月17日 11:18
  • 20085

mysql的1093错误You can't specify target table 't' for update in FROM clause 简单解决

mysql> delete from t where id in (select id from t where id 5);   ERROR 1093 (HY000): You ca...
  • chenhao0568
  • chenhao0568
  • 2017年03月03日 10:49
  • 538

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

UPDATE sdb_goods SET disabled='true' WHERE goods_id IN(SELECT goods_id FROM sdb_goods WHERE disabled...
  • e421083458
  • e421083458
  • 2013年01月05日 13:33
  • 969

[Django](1093, "You can't specify target table 'fee_details_invoices' for update in FROM clause") 错误

dele_id = Fee_details_invoices.objects.filter(fee_detail_id__in=fee_id_list, return_type='2').values...
  • lzz957748332
  • lzz957748332
  • 2014年07月23日 16:57
  • 2865

[Err] 1093 - You can't specify target table 'table' for update in FROM clause处理

现在有这样的一张表img_style,表示图片的类型 IS_ID IS_Name IS_Type IS_State IS_Time 1 生日派对 1 1 2...
  • oshidi
  • oshidi
  • 2016年07月26日 17:17
  • 952
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySQL can’t specify target table for update in FROM clause错误解决
举报原因:
原因补充:

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