>  기사  >  데이터 베이스  >  mysql中You can’t specify target table for update in FROM clau

mysql中You can’t specify target table for update in FROM clau

WBOY
WBOY원래의
2016-06-07 16:03:081302검색

mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。 例如下面这个sql: 代码如下: delete from tbl where id in ( select max(id) from tbl a where EXISTS

 mysql中You can't specify target table 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不会出现此问题。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.