美文网首页mysql
mysql不允许在同一个表上查询和更新

mysql不允许在同一个表上查询和更新

作者: GALAXY_ZMY | 来源:发表于2017-03-18 22:09 被阅读126次

mysql不允许在同一个表上查询和更新,例如下面sql语句尝试将两个表中相似行的数量记录到字段cnt中。

update tb1 as outer_tb1 
   set cnt = (
      select count(*) from tb1 as inner_tb1
      where inner_tb1.type = outer_tb1.type
  );  

可以通过使用生成表的形式绕开上面的限制,mysql只会吧这个表当做一个临时表,实际上是执行了两个查询,一个是子查询的select,另一个是多表关联的update,只是关联的表是个临时表。子查询会在update语句打开表之前就完成,所以可以改为下面的方式实现:

update tb1
  inner join(
    select type,count(*) as cnt
    from tb1
    group by type
  ) as der using(type)
set tb1.cnt = der.cnt;

(笔记)

相关文章

  • mysql不允许在同一个表上查询和更新

    mysql不允许在同一个表上查询和更新,例如下面sql语句尝试将两个表中相似行的数量记录到字段cnt中。 可以通过...

  • MySQL 优化

    MySQL 优化 表关联查询时务必遵循小表驱动大表原则; 使用查询语句where条件时,不允许出现函数,否则索引会...

  • MySQL 优化点

    MySQL 优化 表关联查询时务必遵循小表驱动大表原则; 使用查询语句where条件时,不允许出现函数,否则索引会...

  • mysql You can't specify target t

    mysql 不能对同一个语句进行查询又更新 问题 涉及表(字段)涉及表字段.png 执行语句 错误提示You ca...

  • mysql2——11-21

    mysql2 mysql查询 查询整个表 从表查精确查询字段 精确查询多个字段AND为必传字段,key和value...

  • 存储过程(根据传入字段,来操作数据表)

    自己做个备忘记录 1.需求: 根据传入的字段查询,给查询的表添加锁,查询不允许更新,更新成功后添加添加详细。 2,...

  • SQL语句用法记录

    1.查询mysql数据库哪些表存在更新 selectupdate_time,table_namefrominfor...

  • mysql表关系

    mysql数据库 知识要点: 单表查询 子查询 联表查询 事务 在进行查询之前,我们要先建好关系表,并往数据表中插...

  • 以下MySQL的问题 你知道多少呢?

    MySQL表中允许有多少触发器?MySQL表允许以下6个触发器: -在插入之前-在插入后-更新前-更新后-删除和-...

  • 2019-02-22

    mySQL Navicat for mySQL 关系型数据库:用表传数据 如何建表:查询→新建查询 注释: -- ...

网友评论

    本文标题:mysql不允许在同一个表上查询和更新

    本文链接:https://www.haomeiwen.com/subject/jyppnttx.html