首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法在FROM子句中指定用于更新的目标表- Mysql 5.7.10 - derived_merge不工作

问题描述: 无法在FROM子句中指定用于更新的目标表- Mysql 5.7.10 - derived_merge不工作

回答: 在MySQL 5.7.10版本中,无法在FROM子句中指定用于更新的目标表,这是由于MySQL的语法限制所导致的。在此版本中,derived_merge优化器不起作用,因此无法使用这种方式进行更新操作。

解决方法: 要解决这个问题,可以使用子查询来实现更新操作。可以将需要更新的数据查询出来,然后将查询结果作为子查询,再进行更新操作。

示例代码如下:

代码语言:txt
复制
UPDATE table_name
SET column_name = new_value
WHERE primary_key_column IN (SELECT primary_key_column FROM (SELECT * FROM table_name) AS subquery);

其中,table_name是需要更新的表名,column_name是需要更新的列名,new_value是新的值,primary_key_column是主键列名。

应用场景: 这种情况通常发生在需要更新的目标表与子查询中的表有关联关系时。通过使用子查询来更新数据,可以绕过MySQL 5.7.10版本中的语法限制,实现更新操作。

推荐的腾讯云相关产品: 腾讯云提供了多种云计算产品,可以满足各种需求。以下是一些相关产品的介绍:

  1. 云数据库MySQL: 腾讯云的云数据库MySQL是一种高性能、可扩展的关系型数据库服务。它提供了稳定可靠的数据库服务,支持自动备份、容灾、监控等功能,适用于各种规模的应用场景。了解更多:云数据库MySQL
  2. 云服务器CVM: 腾讯云的云服务器CVM是一种弹性计算服务,提供了可靠的计算能力和内存资源。它支持多种操作系统和应用程序,适用于各种开发和部署需求。了解更多:云服务器CVM
  3. 云函数SCF: 腾讯云的云函数SCF是一种无服务器计算服务,可以帮助开发者更轻松地构建和运行应用程序。它支持多种编程语言和触发器类型,提供了灵活的扩展能力和高可用性。了解更多:云函数SCF

以上是一些腾讯云的相关产品,可以根据具体需求选择合适的产品来解决问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL对derived table优化处理与使用限制

这里我把它翻译成派生,简单来讲,就是将from 子句中出现检索结果集当做一张,比如from 一个select构造子查询,这个子查询就是一个派生from 一个视图,这个视图就是一个派生from...5.UNION 或union all,这种情况不会发生合并,MySQL8.0.29版本之后条件会下推。...5.派生作为外连接内层(比如left join),条件无法推入到派生,因为条件推入后,语句含义就变了。...6.从MySQL8.0.28版本开始,派生select 列表包含分配用户变量,条件不能推入派生。...(1)外层查询没有分组或聚合运算 (2)外层查询没有指定distinct,having 或order by。 (3)外层查询只有这个派生作为from子句唯一源。

50711

看完这篇文章,99%的人都会使用Mysql Explain工具

查询包含子查询和union primary:复杂查询中最外层 select subquery:包含在 select 子查询(不在 from 子句中) derived:包含在 from 子句子查询...MySQL会将结果存放在一个临时,也称为派生(derived英文含义) union: union 第二个和随后所有select 下面这个例子主要来了解(simple)查询类型 EXPLAIN...关于下图中,给出优化sql,显示查询是dual,这个是mysql自带,像我们上面的sql,mysql会直接将数据解析到空,查询返回出去,所以效率才会高 ?...6.key列 这一列显示mysql实际采用哪个索引来优化对该访问。 7.key_len列 这一列显示了mysql索引里使用字节数,通过这个值可以算出具体使用了索引哪些列。...8.ref列 这一列显示了key列记录索引查找值所用到列或常量 9.rows列 这一列是mysql估计要读取并检测行数,注意这个不是结果集里行数。

54010
  • 故障分析 | MySQL 派生优化

    Derivedtable(派生) 实际上是一种特殊 subquery(子查询),它位于 SQL 语句中 FROM 子句 里面,可以看做是一个单独。 ?...MySQL 5.7 之前处理都是对 Derived table(派生) 进行 Materialize(物化),生成一个 临时 用于保存 Derived table(派生) 结果,然后利用 临时...MySQL 5.7 对 Derived table(派生) 做了一个新特性,该特性允许将符合条件 Derived table(派生) 子表与父查询合并进行直接 JOIN,类似于 Oracle...解决派生关联过程无法使用索引问题。 我们先解决问题 1,这个问题比较简单。...all,那么该 SQL 是无法利用到 derived_merge 特性,因此无法直接走索引过滤。

    1.5K20

    mysql optimizer_switch : 查询优化器优化策略深入解析

    不允许多次指定任何给定opt_name,这会导致错误。该值任何错误都会导致赋值失败,并导致optimizer_switch值保持不变。...derived_merge 当查询包含派生(由子查询生成临时)时,derived_merge 标志控制是否尝试将这些派生合并到外部查询。这可以减少查询复杂性并提高性能。...索引扩展是一种技术,其中优化器可以使用索引额外信息来过滤结果集,而无需回查找数据行。...物化子查询是将子查询结果集存储临时,以便在外部查询重复使用。这可以提高某些类型查询性能,但也可能增加内存使用。...不是所有的优化标志都适用于所有版本 MySQL更改设置之前,请查阅相关文档以确保你了解每个标志具体行为和限制。 避免在生产环境盲目更改设置。应该基于实际性能分析和测试来做出决策。

    18410

    MySQL 执行计划深入解读

    查询类型主要是用于区别普通查询,联合查询,子查询等复杂查询 simple,简单select 语句,查询包含自查询或者 union primary, 查询若包含任何复杂子部分,最外层查询则被标记为...primary subquery, select 或 where 列表包含子查询 derived, from 列表包含自查询被标记为 derived (衍生)MySQL 会递归执行这些自查询,...若 union 包含在 from 子句子查询,外层 select 将别标记为 derived union result, 从 union 获取结果 select table 这行数据是关于那张...Null explain select min(id) from t1; mysql 能够优化阶段分析查询语句,执行阶段不用再访问或者索引。...* from t1 where col1 = 'ab' and col2 = 'bc'; 表示索引中使用字节数,可通过该列计算查询使用索引长度,损失精确性情况下,长度越短越好 key_len

    67130

    MySQL Explain 执行计划详解、写高效SQL、灵活使用索引(实战)

    如果from子句后面包含select语句,则会产生这种类型,它会把中间结果存放在临时,但是5.7需要使用 set session optimizer_switch='derived_merge=...NULL: 代表查询mysql能够优化阶段分解查询语句时候直接能完成,不需要查询和索引,例如获取逐渐最大列或最小列: EXPLAIN select min(id),max(id) from film...film on film_actor.film_id = film.id; 可以看出访问film时候,type达到了eq_ref级别,因为id字段film是唯一,所以查询film时候按照...如果想强制mysql使用或忽视possible_keys列索 引,查询中使用 force index、ignore index。...ref 这一列显示了key列记录索引查找值所用到列或常量,常见有:const(常 量),字段名(例:film.id) rows 这一列是mysql估计要读取并检测行数,注意这个不是结果集里行数

    57030

    技术分享 | MySQL 子查询优化

    ---- 有这么一个 SQL,外查询 where 子句 bizCustomerIncoming_id 字段,和子查询 where 字句 cid 字段都有高效索引,为什么这个 SQL 执行非常慢,需要全扫描...对于 derived 派生,优化器有如下策略选择: derived_merge,将派生合并到外部查询(5.7 引入 ); 将派生物化为内部临时,再用于外部查询。...MySQL 会将相关外层压到子查询,优化器认为这样效率更高。...子查询,优化器可以识别出 in 子句中每组只需要返回一个值,在这种情况下,可以使用 semijoin 来优化子查询,提升查询效率。...这里 semijoin 优化后执行流程为: 1. 先执行子查询,把结果保存到一个临时,这个临时有个主键用来去重; 2. 从临时取出一行数据 R; 3.

    3.1K21

    分析查询语句EXPLAIN详解,一步一步带你了解字段含义

    ,执行查询会返回执行计划信息,而不是执行这条 SQL 注意:如果 from 包含子查询,仍会执行该子查询,将结果放入临时 官网:https://dev.mysql.com/doc/refman/...、subquery 包含在 select 子查询(不在 from 子句中),比如上面的例子就是 4、derived 包含在 from 子句子查询。...MySQL会将结果存放在一个临时,也称为派生(derived英文含义) explain select (select 1 from actor where id = 1) from (select...session optimizer_switch='derived_merge=off'; #关闭mysql5.7新特性对衍生合并优化 set session optimizer_switch=...,然后MySQL再去获取这些条目对应完整行数据。

    53010

    这个MySQL优化原理剖析,比照X光还清楚

    如果无法命中缓存,就继续走到分析器一步,如果命中缓存就直接返回给客户端 。 如果使用查询缓存,进行读写操作时会带来额外资源消耗,如果在一个写多读少环境,缓存会频繁新增和失效。...(派生SELECT, FROM子句子查询); (9) UNCACHEABLE SUBQUERY(一个子查询结果不能被缓存,必须重新评估外链接第一行)。...如将主键置于where列表MySQL就能将该查询转换为一个常量,system是const类型特例,当查询只有一行情况下,使用system NULL: MySQL优化过程中分解语句,执行时甚至不用访问或索引...损失精确性情况下,长度越短越好。 8. ref 表示上述连接匹配条件,即哪些列或常量被用于查找索引列上值。...Using filesort:MySQL无法利用索引完成排序操作称为“文件排序”,对结果使用一个外部索引排序,而不是按索引次序从表里读取行。

    69540

    MySQL(七)联结

    它包含另一个主键值,定义了两个之间关系 3、联结优点: ①数据信息不重复,从而浪费时间和空间 ②如果某个数据信息变动,可以只更新某个记录,相关数据不用变更 ③数据无重复,可以更有效存储和方便处理..., B_name; 该SQL语句中,select语句指定要检索列(因为是创建关联,所以指定了3个列,区别在于A_nameA,B_name和B_mobile另一个);from语句列出了2个分别是...别名只查询执行中使用,别名返回到客户端主机) 2、自联结 自联结:自联结通常作为外部语句用来替代从相同检索数据时使用子查询语句。...p1前缀给出所需列名,否则MySQL将返回错误,因为其无法正确区分想要具体为哪一列; 3、自然联结 无论何时对表进行联结,应至少有一个列出现在不止一个(被联结列);标准联结返回所有数据,自然联结排除多次出现...; 这条select语句使用关键字outer join来指定联结类型(不是where子句指定);使用outer join语法时,必须使用left或right指定包括其他所有行(right指出右边

    73210

    【重学 MySQL】五十一、更新和删除数据

    【重学 MySQL】五十一、更新和删除数据 MySQL更新和删除数据是数据库管理基本操作。 更新数据 为了更新(修改)数据,可使用UPDATE语句。...condition:确定要更新过滤条件。 UPDATE语句使用方式有两种: 更新特定行:通过WHERE子句指定条件,只更新满足条件行。...更新所有行:省略WHERE子句,将更新所有行(通常推荐这样做,除非确实需要更新所有行)。...例如,要删除customerscust_id为10006行,可以使用以下语句: DELETE FROM customers WHERE cust_id = 10006; 除了DELETE语句外,MySQL...这是一个非常危险操作,一旦执行,数据将无法恢复。 TRUNCATE TABLE语句:用于快速删除所有数据,但保留结构。

    9510

    性能优化|这恐怕是解释Explain关键字最全一篇文章

    from actor where id=1) from film derived: 衍生,如果from子句后面包含select语句,则会产生这种类型,它会把中间结果存放在临时,但是5.7需要使用...set session optimizer_switch='derived_merge=off' 发现出现了derived查询了, union: union 第二个和随后 selectexplain...NULL: 代表查询mysql能够优化阶段分解查询语句时候直接能完成,不需要查询和索引,例如获取逐渐最大列或最小列:EXPLAIN select min(id),max(id) from film...如果想强制mysql使用或忽视possible_keys列索 引,查询中使用 force index、ignore index。...ref 这一列显示了key列记录索引查找值所用到列或常量,常见有:const(常 量),字段名(例:film.id) rows 这一列是mysql估计要读取并检测行数,注意这个不是结果集里行数

    52730

    SQL命令记录

    数据库操作 CREATE TABLE 语句用于创建数据库由行和列组成,每个都必须有个名。...CHECK - 保证列值符合指定条件。 DEFAULT - 规定没有给列赋值时默认值。 1.2.2. 索引 您可以创建索引,以便更加快速高效地查询数据。...用户无法看到索引,它们只能被用来加速搜索/查询。 注释:更新一个包含索引需要比更新一个没有索引花费更多时间,这是由于索引本身也需要更新。...INSERT INTO SELECT 语句从一个复制数据,然后把数据插入到一个已存在目标任何已存在行都不会受影响。...修改 请注意 SQL UPDATE 语句中 WHERE 子句! WHERE 子句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE 子句,所有的记录都将被更新

    21620

    MySQLMySQL数据库进阶使用

    如果冲突数据和要更新数据不同,则会先删除中原有的冲突数据,然后新插入要更新数据,sql语句返回结果就是2 row affected;如果update数据和冲突的话,则该语句作用和普通...retrieve是取回意思,MySQL可以认为是读取操作,MySQL查询数据操作,也就是R操作最为频繁,同样也是需要重点学习操作,R操作里面,最典型SQL语句就是select语句,用于查询数据...实际中非常建议使用全列查询,因为这需要显示所有数据,而部分数据可能此时并不在内存,则mysqld服务还需要磁盘IO来加载剩余数据,降低MySQL查询性能,同时全列查询还无法使用索引来优化查询过程...update用于更改某一行或者多行数据,值得注意是,使用update对表数据进行更新时候,如果不跟上where子句进行数据筛选的话,则update会对表中所有的行进行某一列字段值更新,因为...内连接实际就是先根据on条件对表连接结果作筛选,所以关键字优先级为from>on>join,因为作笛卡尔积之前,要指定连接条件,让两个真正连接时,有目的连接。

    33620

    MySQL安装

    管理 mysql 命令 这里是重要MySQL命令,经常在MySQL数据库管理或工作中使用: USE Databasename : 用于选择MySQL工作指定数据库。...可以指定使用任何条件WHERE子句中。 可以一次更新一个值。 当想更新中选定行,WHERE子句是非常有用。...语法 这里是DELETE命令从一个MySQL删除数据通用SQL语法: DELETE FROM table_name [WHERE Clause] 如果WHERE子句没有指定,则所有MySQL记录将被删除...可以指定使用任何条件WHERE子句中。 可以一次删除一个所有记录。 当要删除一个中选择特定行,WHERE子句是非常有用。...删除一个现有列,那么使用ALTER命令以及DROP子句如下: mysql> ALTER TABLE testalter_tbl DROP i; 如果在列是唯一一个,那么DROP将无法正常工作

    11.3K71

    MySQL 5.7新功能

    默认值1维护MySQL 5.7.4之前配置,其中有一个页面清理线程。此增强功能建立MySQL 5.6完成工作之上,它引入了单个页面清理程序线程来从InnoDB主线程卸载缓冲池刷新工作。...生成列可以是虚拟(在读取行时“MySQL 5.7添加功能”中计算)或存储(插入或更新行时计算)。有关更多信息,请参见第13.1.18.8节“创建和生成列”。 MySQL客户端。...MySQL 5.7推荐使用功能 MySQL 5.7推荐使用以下功能,可能会在将来系列删除。显示替代方案地方,应更新应用程序以使用它们。...mysql.user系统不能再指定帐户身份验证插件,因此任何从明文字符串中分配密码语句都可以明确地确定要在字符串上使用哈希方法,然后再将其存储mysql.user。...从MySQL 5.7.10开始,推荐使用innodb_support_xa系统变量,该变量支持InnoDB支持XA事务两阶段提交。

    2.1K20
    领券