• 首页
  • 邻居
  • 关于
  • 归档
  • 搜索
  • 夜间模式
    ©2020-2026  我的学习笔记 Theme by OneBlog

    我的学习笔记博客

    搜索
    标签
    # 随笔 # Java # 教程 # openwrt # Mysql # SQL # 爬虫 # post # Js调优 # MAVEN
  • 首页>
  • Java>
  • 正文
  • MySQL之You can't specify target table for update in FROM clause解决办法

    2020年11月25日 1.9 k 阅读 1 评论 991 字

    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
    )

    也就是说将select出的结果再通过中间表select一遍,这样就规避了错误。注意,这个问题只出现于mysql,mssql和Oracle不会出现此问题。

    
    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
    )
        UPDATE t_user_asset SET f_cashAmount =   
        (  
          SELECT ub.cashAmount FROM  
                (  
                     SELECT (ua.f_cashAmount+50000) cashAmount FROM t_user_asset ua WHERE ua.f_userId = 290  
                ) ub  
        )  
        WHERE f_userId = 290  
    本文著作权归作者 [ admin ] 享有,未经作者书面授权,禁止转载,封面图片来源于 [ 互联网 ] ,本文仅供个人学习、研究和欣赏使用。如有异议,请联系博主及时处理。
    取消回复

    发表留言
    回复

    读者留言1

    1. 11 Lv.1
      2021-03-22 22:15 回复

      11

    加载更多评论
    加载中...
    — 已加载全部评论 —
    首页邻居关于归档
    Copyright©2020-2026  All Rights Reserved.  Load:0.018 s
    京ICP备18019712号
    Theme by OneBlog V3.6.5
    夜间模式

    开源不易,请尊重作者版权,保留基本的版权信息。