mysql在update时,从其他select结果集更新表

需要使用join,例如

select g.id,g.res_count,count(gr.r_id) cnt from mb_game_res gr left join mb_game g on gr.g_id = g.id group by gr.g_id order by cnt desc
update mb_game a left join (select g.id id,count(gr.r_id) cnt from mb_game_res gr left join mb_game g on gr.g_id = g.id group by gr.g_id) b on a.id = b.id set a.res_count = b.cnt

时间: 2024-10-13 21:57:52

mysql在update时,从其他select结果集更新表的相关文章

mysql 进行update时,要更新的字段中有单引号或者双引号导致不能批量生成sql的问题

前言 将数据从一张表迁移到另外一张表的过程中,通过mysql的concat方法批量生成sql时遇到了一个问题,即进行UPDATE更新操作时如果原表中的字段中包含单引号'或者双引号",那么就会生成不正确的update语句. 原因当然很简单因为update table set xxx = 'content'时content一般由英文单引号'或者双引号"包裹起来,使用单引号较多. 如果content中包含单引号'时我们需要对单引号'进行转义或者将content用双引号括起来,这样双引号&qu

mysql数据库update时只更新部分数据方法

需求:更新url中最一个字符的'-1'改为'-5',前面的内容保持不变 url列的内容如下:http://h5game.ecs.cedarmg.com/a/captal/dispther.do?deviceid=b-01-1 SELECT * from qrmsg WHERE url LIKE '%1' http://h5game.ecs.cedarmg.com/c/captal/dispther.do?deviceid=b-01-1 需要把最后这个-1改成-5 操作方式如下: UPDATE q

MySQL实战 | 01-当执行一条 select 语句时,MySQL 到底做了啥?

原文链接:当执行一条 select 语句时,MySQL 到底做了啥? 也许,你也跟我一样,在遇到数据库问题时,总时茫然失措,想重启解决问题,又怕导致数据丢失,更怕重启失败,影响业务. 就算重启成功了,对于问题的原因仍不知所以. 本文开始,记录学习<MySQL实战45讲>专栏的过程. 也许有人会问,你记录有什么意义?直接看专栏不就行了吗?你这不是啃别人的剩骨头吗? 是的,这个系列,我只是基于专栏学习,但是我会尽量从我的角度搞懂每一个知识点,遇到不懂得也会将知识点进行拆分. 我知道关注公众号的小伙

mysql update不能直接使用select的结果

在sql server中,我们可是使用以下update语句对表进行更新:update a set a.xx= (select yy from b) ;但是在mysql中,不能直接使用set select的结果,必须使用inner join:update a inner join (select yy from b) c set a.xx = c.yy 例: update mb_tariff a inner join mb_tariff_temp b  set a.payment =  b.pay

mysql: update字段中带select

update字段中带select UPDATE tb_report_type A INNER JOIN (SELECT LEVEL_CODE FROM tb_report_type WHERE id = 'ED894BE001CE4F47A2916287A491B4E1') BSET A.LEVEL_CODE = CONCAT(B.LEVEL_CODE,'-',A.id) WHERE A.PARENT_ID = 'ED894BE001CE4F47A2916287A491B4E1'

Mysql 插入记录时检查记录是否已经存在,存在则更新,不存在则插入记录SQL

我们在开发数据库相关的逻辑过程中, 经常检查表中是否已经存在这样的一条记录, 如果存在则更新或者不做操作, 如果没有存在记录,则需要插入一条新的记录. 这样的逻辑固然可以通过两条sql语句完成. SELECT COUNT(*) FROM xxx WHERE ID=xxx; if (x == 0) INSERT INTO xxx VALUES; else UPDATE xxx SET ; 但是这样操作在性能上有所损失, 代码结构感觉有点丑陋. 其实MySQL提供了可以在一个SQL语句中完成上述逻辑

linux下mysql Insert update delete 事务 用户管理

linux下mysql Insert update delete  事务 用户管理 1.INSERT插入语句格式: INSERT INTO tb_name (字段1, 字段2, ...) VALUES (值1,值2, ...)[,(值1, 值2, ...),...]; INSERT INTO 表名 SET 字段1=值1,字段2=值2,...; INSERT INTO 表名 (字段1,字段2,...) SELECT (字段1,字段2,...) FROM 表名 [WHERE 条件]; 2.REPLA

mysql select是否会锁表 ?

mysql select是否会锁表 ? 有的人说mysql的 select 会锁表 ,有的人说 mysql 的查询不会锁表 .其他他们都对,没有 ,但是很片面. 其实对于mysql的select 是否会锁表 ,这个完全取决于表采用的是什么存储引擎. 这里我就拿大家最熟悉的存储引擎INNODB 和MYISAM 来说明这个问题. 对于myisam的表select 是会锁定表的 ,会导致其他操作挂起,处于等待状态.对于innodb的表select 是不会锁表的.其实这里使用到了快照.快照这里不作讨论.

mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法

[CSDN下载] Powerdesigner 设计主键code不能重复等问题 [CSDN博客] Oracle中用一个序列给两个表创建主键自增功能的后果 [CSDN博客] MySQL自增主键删除后重复问题 [CSDN博客] mysql 主从复制 双主从复制原理 防止主键重复问题(必看) [CSDN博客] replace into导致mysql自增列导致主键重复问题分析 [CSDN博客] 一个循环更新某库所有表所有非主键列的值方法(sql 2005 & mysql) [CSDN博客] mysql i