您现在的位置是:首页 > 正文

mysql update执行报错:You can‘t specify target table ‘表名‘ for update in FROM clause错误

2024-02-29 14:52:26阅读 0

根源:
分组查询想着根据需求更新一些数据,如下sql,然后报错了。(平常使用这种情况不多,在此记录一下。)
错我的大概意思:
不能先select出同一表中的某些值,再update这个表(在同一语句中)

一、报错SQL

update scale_score_master set is_first_end=1 where master_id in(select master_id from scale_score_master ssm where ssm.group_id="24120868141551624"  and`complete_form`=1 and is_first_end=0 group by ssm.patient_user_id 
having count(patient_user_id)=1)

在这里插入图片描述

二、何为派生表?

1>何为派生表?

派生表是Microsoft公司新推出的SQL2005数据库的一个增强功能。它将子查询做为一个表来处理,这个由子查询得出的新表就是我们说的“派生表”。
​ 派生表是在外部查询的FROM子句中定义的,只要外部查询一结束,派生表也就不存在了。

select hospital_id from (select hospital_id,hospital_name from ts_hospital) as th

如上就是一个派生表,和下边的作用是等同的。在实际实行过程中,mysql也会自动将如上派生表优化成下边的语句。

select hospital_id from ts_hospital

2>派生表作用?

它的出现,使子查询的效率大大提高,对于数据量大的数据系统无疑是一个新的提效手段。
正常手动执行的sql中完全可以使用派生表,真正项目还是尽可能的优化掉派生表的出现。

二、更改后SQL

update scale_score_master set is_first_end=1 where master_id in (select master_id from (select * from scale_score_master where master_id in(select master_id from scale_score_master ssm where ssm.group_id="24120868141551624" group by ssm.patient_user_id 
having count(patient_user_id)=1) and `complete_form`=1 and is_first_end=0 and create_time>'2022-05-31 23:59:59') ssm)

将select得到的结果,再通过中间表select一遍,这样就规避了错误。

网站文章

  • vue3+vite路由中使用element自动导入图标

    vue3+vite路由中使用element自动导入图标

    【代码】vue3+vite路由中使用element自动导入图标。

    2024-02-29 14:52:20
  • 云原生相关介绍,什么是云原生很全面

    云原生相关介绍,什么是云原生很全面

    近年来,随着云计算概念和技术的普及,云原生一词也越来越热门,无论是应用还是安全,凡是和云相关的,都要在云后面加上原生二字,好像不提云原生,在技术上就落后了一大截。那到底什么是云原生?云原生是怎么产生的...

    2024-02-29 14:52:14
  • antDesign国际化

    antDesign国际化

    侧边栏/全局header的国际化可以通过修改src直接目录下的locale文件如果没起作用,检查一下路由配置的name是否相同区块内容的国际化可以通过在区块目录下创建locale文件,并引入import { FormattedMessage, formatMessage } from ‘umi-plugin-react/locale’;配置语言文件使用当切换语言时会自动...

    2024-02-29 14:51:43
  • 热评云厂商:软通动力7.93亿元,加速云业务创新升级

    热评云厂商:软通动力7.93亿元,加速云业务创新升级

    全球云观察《云白皮书(2020-2021)》热评云厂商60家之四十二

    2024-02-29 14:51:35
  • cordova打开外部链接_在ionic应用中打开外部网站(使用InAppBrowser插件)

    在安卓上试了一下,如果直接window.open(url),在app中点击外部链接没有任何反应。安装外链网址已屏蔽执行命令:ionic plugin add cordova-plugin-inappb...

    2024-02-29 14:51:27
  • html css 面试题 两边固定,中间自适应布局

    两边自适应布局

    2024-02-29 14:50:51
  • Exception in thread “main“ org.apache.ibatis.exceptions.PersistenceException:问题的解决

    Exception in thread “main“ org.apache.ibatis.exceptions.PersistenceException:问题的解决

    Exception in thread “main” org.apache.ibatis.exceptions.PersistenceException:解决 我遇到的这个问题解决蛮简单,查了一点资料...

    2024-02-29 14:50:45
  • C++: warning "will be initialized after [-Wreorder]

    背景 使用GCC编译代码时遇到以下警告: warning "will be initialized after [-Wreorder] 原因 构造函数时,初始化成员变量的顺序要与类声明中的变量顺序相对应,若不对应,则出现如题错误。解决方法就是按照顺序进行初始化。 对这个问题,StackOverflow上也发生了讨论,以下摘录原文: https://stackoverflow.c...

    2024-02-29 14:50:18
  • 微信登录

    1.在build.gradle文件中,添加如下依赖即可: dependencies { compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+' } AndroidManifest.xml 设置,添加必要的权限支持:

    2024-02-29 14:50:10
  • Mybatis-Plus之AR模式开启

    一、简介(ActiveRecord) 这是一种领域模型模式,特点是一个模型类对应关系型数据库中的 一个表,而模型类的一个实例对应表中的一行记录。 ActiveRecord 一直广受动态语言( PHP ...

    2024-02-29 14:50:03