最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

mysql中Youcan’tspecifytargettableforupdateinFROMclause错误解决方法

来源:动视网 责编:小采 时间:2020-11-09 21:01:44
文档

mysql中Youcan’tspecifytargettableforupdateinFROMclause错误解决方法

mysql中YoucantspecifytargettableforupdateinFROMclause错误解决方法:mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。 例如下面这个sql: 代码如下: delete from tbl where id in ( se
推荐度:
导读mysql中YoucantspecifytargettableforupdateinFROMclause错误解决方法:mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。 例如下面这个sql: 代码如下: delete from tbl where id in ( se


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不会出现此问题。

您可能感兴趣的文章:

  • mysql中错误:1093-You can’t specify target table for update in FROM clause的解决方法
  • mysql “ Every derived table must have its own alias”出现错误解决办法
  • 读取mysql一个库下面的所有的表table
  • MySQL无法重启报错Warning: World-writable config file ‘/etc/my.cnf’ is ignored的解决方法
  • mysql Event Scheduler: Failed to open table mysql.event
  • 出现错误mysql Table ''performance_schema...解决办法
  • 文档

    mysql中Youcan’tspecifytargettableforupdateinFROMclause错误解决方法

    mysql中YoucantspecifytargettableforupdateinFROMclause错误解决方法:mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。 例如下面这个sql: 代码如下: delete from tbl where id in ( se
    推荐度:
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top