首页
学习
活动
专区
圈层
工具
发布

解决MySQL错误:You can‘t specify target table ‘xxx‘ for update in FROM clause

在编写MySQL的UPDATE或DELETE语句时,如果子查询中直接引用了要操作的目标表,可能会遇到一个常见的错误: You can’t specify target table ‘xxx’ for...会报错: You can't specify target table 'users' for update in FROM clause 原因分析 MySQL不允许在UPDATE或DELETE语句的子查询中直接引用目标表...MySQL的限制 出于实现机制,MySQL无法在同一查询中同时处理“修改表”和“查询同一表”的操作。...解决方案 方法1:使用派生表(推荐) 将子查询结果包装为派生表,MySQL会将其视为临时结果集而非原表。...-- 创建临时表 CREATE TEMPORARY TABLE tmp_users (id INT); INSERT INTO tmp_users SELECT id FROM users WHERE

86510
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Navicat报错:2003 - Can‘t connect to MySQL server on ‘xxx‘

    在本地的Navicat连接服务器上的数据库时,第一次连接可能会出现如下错误,表示没有连接成功 [在这里插入图片描述] 解决方法: 第一种方法 一般需要改下服务器上mysql的权限,首先登录服务器上的mysql...,%:表示可以任何主机都能连接到mysql服务器 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '这里写自己数据库的密码' WITH GRANT...@'192.168.x.x' IDENTIFIED BY '这里写自己数据库的密码' WITH GRANT OPTION; 最后刷新权限使其生效 FLUSH PRIVILEGES; 第二种方法 此时的MySQL...配置不支持远程连接,登录服务器的mysql后,查看root用户下的 host use mysql; select host from user where user='root'; [在这里插入图片描述

    3.5K10

    1146 mysql_MySQL–ERROR 1146 (42S02):table doesn’t exist

    ERROR 1146 (42S02): Table ‘xxx’ doesn’t exist 可能是很多人都遇到的问题,尤其在数据库迁移或备份的时候 mysql数据目录结构 mysql数据目录下有如下几个重要文件...* from video; ,报错了: ERROR 1146 (42S02): Table ‘djangomysql.getvideo_video’ doesn’t exist1 2MariaDB [...videos_db]> select * from video; ERROR 1146 (42S02): Table ‘videos_db.video’ doesn’t exist 继续探索原因 因为数据库目录...2、启动mysql,查询 show databases 和 show tables 确定无误后,退出mysql shell,停止mysql服务(比如 service mariadb stop) 3、然后把旧...mysql中的ibdata1文件拷贝到新mysql数据目录下 mysql/ibdata1,这个时候我们会发现目录下有 ib_logfile0 ib_logfile1 和 ibdata1 4、再次启动新的

    1.8K10
    领券