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

UPDATE bpm_tksign_data
SET iscompleted = 1
WHERE
    actinstid = ‘10000002433415‘
AND nodeid = ‘SignTask1‘
AND iscompleted = 0
AND batch = (
    SELECT
        max(a.batch) m
    FROM
        bpm_tksign_data a
    WHERE
        a.actinstid = ‘10000002433415‘
    AND a.nodeid = ‘SignTask1‘
);

这种写法,mysql各个版本都不支持。

UPDATE bpm_tksign_data
SET iscompleted = 1
WHERE
    actinstid = ‘10000002433415‘
AND nodeid = ‘SignTask1‘
AND iscompleted = 0
AND batch = (
    SELECT
        max(a.batch) m
    FROM
        (SELECT * FROM bpm_tksign_data) a
    WHERE
        a.actinstid = ‘10000002433415‘
    AND a.nodeid = ‘SignTask1‘
);

这种写法,mysql 5.6支持,mysql 5.7不支持。

UPDATE bpm_tksign_data
SET iscompleted = 1
WHERE
    actinstid = ‘10000002433415‘
AND nodeid = ‘SignTask1‘
AND iscompleted = 0
AND batch = (
    SELECT
        p.m
    FROM
        (
            SELECT
                max(a.batch) m
            FROM
                bpm_tksign_data a
            WHERE
                a.actinstid = ‘10000002433415‘
            AND a.nodeid = ‘SignTask1‘
        ) p
);

这种写法,mysql各个版本都可以支持。

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

时间: 2024-10-10 17:20:34

mysql:You can't specify target table 'bpm_tksign_data' for update in FROM clause的相关文章

mysql 更新sql报错:You can't specify target table 'wms_cabinet_form' for update in FROM clause

数据库里面有两个字段的位置不对,要把他们对调换下.因为没有数据库写的权限,需要用sql语句来实现.原来以为简单的 update table a set a.字段a=(select b字段 from table  where id=?) ,set a.字段b=(select a字段 from table where id=?) where id=? ,结果报了 这个问题 You can't specify target table 'wms_cabinet_form' for update in

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

SELECT uin,account,password,create_user_uin_tree FROM sys_user 结果: 表中的create_user_uin_tree标识该条记录由谁创建. 创建新用户时,根据当前登录用户的uin及新创建的用户uin,有如下SQL: select concat(ifNULL(create_user_uin_tree,concat('_',2,'_')),'|_','97',"_") from sys_user where uin=2 结果:

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

问题: 今天在MySQL数据库删除重复数据的时候遇到了一个问题.如下脚本: DELETE FROM tempA WHERE tid IN ( SELECT MAX(tid) AS tid FROM tempA GROUP BY name,age ) 会出现报错信息: You can't specify target table 'tempA' for update in FROM clause 大致意思是,在同一语句中,不能先select出同一表中的某些值,再update这个表. 解决方法: 需

update mysql row (You can't specify target table 'x' for update in FROM clause)

sql语句(update/delete都会出现此问题) update x set available_material_id = null where id not in (select id from x where additional_info = 1); mistake 大致意思是,在同一语句中,不能先select出同一表中的某些值,再update这个表. You can't specify target table 'x' for update in FROM clause mysql

mysql - sql报错You can't specify target table 'table_name' for update in FROM clause

今天写了个更新数据库表的语句,本意是根据某个条件,筛选出该表某些数据之后,对这些数据进行删除操作,如下 delete from t_person where id in (select id from t_person where name = "hello"); 然而却报错: You can't specify target table 't_person' for update in FROM clause 以下这篇博客( https://blog.csdn.net/qq_2967

MySQL - 1093异常 - You can't specify target table 't' for update in FROM clause

有一个表示地区的表,表结构与数据大概如下表. ID NAME PARENT_ID 1 中国 2 广东省 1 3 广州市 2 4 荔湾区 3 5 越秀区 3 6 番禺区 3 7 小谷围街道 6 现为了查询方便,需要加一列PARENT_NAME,用以表示上级地区的名称(虽然不符合第三范式,传递依赖,但有时为了业务上的可行性.便利性,可以按实际情况考虑) ID NAME PARENT_ID PARENT_NAME 1 中国 2 广东省 1 3 广州市 2 4 荔湾区 3 5 越秀区 3 6 番禺区 3

(原)mysql错误1093 You can't specify target table 'wms_cabinet_form' for update in FROM clause

这个错误的意思是不能先select出同一表中的某些值,再update这个表(在同一语句中),解决方法不直接查询同一个,假设要更新的表为A,则先将A的的数据放到表B,再从表B中查询则得到更新和查询表A的效果 例: 成绩表: 把“SC”表中“姚明”老师教的课的成绩都更改为此课程的平均成绩 update sc set score=(select avg(a.score) FROM (select score,C from sc) a where a.C in (select C from course

关于mysql 5.7版本“报[Err] 1093 - You can't specify target table 'XXX' for update in FROM clause”错误的bug

不同于oracle和sqlserver,mysql并不支持在更新某个表的数据时又查询了它,而查询的数据又做了更新的条件,因此我们需要使用如下的语句绕过: UPDATE teaching_department SET code_year = 2017, notice_code = (SELECT a.code + 1 FROM (SELECT MAX(notice_code) code FROM teaching_department WHERE department_id = 6284 and

MySQL: [Err] 1093 - You can't specify target table 'bk' 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