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

原创 2015年11月20日 13:11:25

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 'wms_cabinet_form' for update in FROM clause

原文地址:http://www.cnblogs.com/chy1000/archive/2010/03/02/1676282.html今天在写 mysql 遇到一个比较特殊的问题。mysql 语句如下...

mysql问题:You can't specify target table for update in FROM clause

mysql 一个较特殊的问题:You can't specify target table 'wms_cabinet_form' for update in FROM clause ...

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这样的错误,它的意思是说,不能...

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

今天在写 mysql 遇到一个比较特殊的问题。 mysql 语句如下: update wms_cabinet_form set cabf_enabled=0 where cabf_id i...

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

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

移动文章分类的sql语句,查询并更新同一个表的方法 You can't specify target table 'news_articles' for update in FROM clause

移动文章分类的sql语句,很简单的一个 要把公司新闻的一些文章移动到公司新闻分类去。手动改麻烦,写个SQL直接改。 行业新闻分类的ID是19 公司新闻分类的ID是20 SQL代码如下: ...

数据库删除重复属性列,错误[HY000][1093] You can't specify target table 'orders' for update in FROM clause

存在一个orders表:CREATE TABLE `orders` ( `Id_o` int(11) NOT NULL AUTO_INCREMENT, `orderNo` VARCHAR(20)...

mysql查询报错: ORDER BY clause is not in GROUP BY..this is incompatible with sql_mode=only_full_group_by

在用mysql执行如下查询的时候: select * from `sys_user_group` group by `GROUP_ID`报错信息如下:[Err] 1055 - Expression #...

Code::blocks报错Can't find compiler executable in you……

刚接触codeblocks没几天老是出现这个错误,导致无法编程,很头大。上网搜了一下是少了相应的编译器MinGw。在官网下载的时候可以看到这几个版本 我选的是第三个,免安装的而且不含MinG...

170.A constraint in a table is defined with the INITIALLY IMMEDIATE clause. You executed the ALTER T

170.A constraint in a table is defined with the INITIALLY IMMEDIATE clause. You executed the ALTER T...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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