update mysql row (You can’t specify target table ‘x’ for update in FROM clause)[通俗易懂]

update mysql row (You can’t specify target table ‘x’ for update in FROM clause)[通俗易懂]sql语句(update/delete都会出现此问题) mistake 大致意思是,在同一语句中,不能先select出同一表中的某些值,再update这个表。 mysql5.7解决办法 老办法(有人说

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);

代码100分

mistake

大致意思是,在同一语句中,不能先select出同一表中的某些值,再update这个表。

代码100分You can't specify target table 'x' for update in FROM clause

mysql5.7解决办法

update x left join
       x xx
       on x.id = xx.id and xx.additional_info = 1
    set available_material_id = null
    where xx.id is null;

老办法(有人说5.7已经不能用了)

原始:

代码100分DELETE FROM tempA WHERE tid IN (
SELECT MAX(tid) AS tid FROM tempA GROUP BY name,age
)

改造后

DELETE FROM tempA WHERE tid NOT IN (
SELECT t.tid FROM (
SELECT MAX(tid) AS tid FROM tempA GROUP BY name,age
) t
)

查询的时候增加一层中间表,就可以避免该错误。

参考

https://stackoverflow.com/questions/51087937/on-update-mysql-row-you-cant-specify-target-table-x-for-update-in-from-claus
https://blog.csdn.net/h996666/article/details/81699255
https://stackoverflow.com/questions/4429319/you-cant-specify-target-table-for-update-in-from-clause/14302701  
https://www.cnblogs.com/pcheng/p/4950383.html  
https://blog.csdn.net/poetssociety/article/details/82391523

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10141.html

(0)
上一篇 2023-01-24
下一篇 2023-01-24

相关推荐

  • Python表达式必须具有整数类型解决方案

    Python表达式必须具有整数类型解决方案在Python语言中,有些表达式需要使用整数类型进行计算,但是当使用其他类型的数字进行计算时,会出现类型错误。例如:

    2024-02-02
    102
  • Oracle修改用户Profile SESSIONS_PER_USER 限制「建议收藏」

    Oracle修改用户Profile SESSIONS_PER_USER 限制「建议收藏」一、Profile目的: Oracle系统中的profile可以用来对用户所能使用的数据库资源进行限制,使用Create Profile命令创建一个Profile,用它来实现对数据库资源的限制使用,如

    2022-12-30
    141
  • 怎么找到mysql的配置文件my.ini_mysql 导入数据

    怎么找到mysql的配置文件my.ini_mysql 导入数据数据库数据量很大的数据库导入到本地时,会等很久,然而等很久之后还是显示失败; 这是就要看看自己本地的没mysql是否设置了超时等待,如果报相关time_out这些,可以把mysql.ini尾部添加ma

    2022-12-25
    146
  • SQL-数字转换

    SQL-数字转换控制符 含义 9 代表一位数字,如果该位没有数字则不进行显示,但对于小数点后面的部分仍会强制显示 0 代表一位数字,如果该位没有数字则强制显示0 $ 显示美元符号 L 显示本地货币符号 . 显示小数…

    2023-03-29
    186
  • Python isnumeric:检查字符串是否是数字

    Python isnumeric:检查字符串是否是数字在Python编程中,我们经常需要对字符串进行操作和处理。其中一个最常见的任务就是检查字符串是否为数字,以确保程序正常地进行下去。Python内置的isnumeric()函数便可用于对字符串进行数字检查。本文将从多个方面介绍该函数,包括使用方法、返回值、案例实践等。

    2024-02-24
    114
  • Mac OSX 平台安装 MongoDB

    Mac OSX 平台安装 MongoDBMongoDB 可视化软件:https://robomongo.org/ 提供了 OSX 平台上 64 位的安装包,你可以在官网下载安装包。 下载地址:https://www.mongodb.com…

    2022-12-23
    154
  • sql中case用法_赋值表达式的条件

    sql中case用法_赋值表达式的条件本文介绍 SQL CASE 表达式,它是 SQL 中数一数二的重要功能,CASE 表达式的语法分为简单 CASE 表达式和搜索 CASE 表达式两种。 本文重点 CASE 表达式分为简单 CASE 表

    2023-05-22
    209
  • redis主从模式原理_redis集群搭建方式

    redis主从模式原理_redis集群搭建方式全分布式redis集群搭建:单节点多实例 1. 准备:redis-3.0.4.tar.gz redis-3.3.0.gem 2 redis-cluster目录下解压redis 3.0 : # tar…

    2023-03-25
    141

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注