mysql更新语句
ringa_lee
ringa_lee 2017-04-17 14:51:26
[MySQL讨论组]

下面的表:p_id是父id,old_id是以前的父id,现在需要把p_id的值改成id
比如第一条数据,之前的父id是10,其实对应的是第二跳记录,所以更新后,p_id=2

更新后的结果:

这样的更新语句sql如何写?
需要做的事情:通过p_id找到old_id,这时候的id就是要更新的值;
第一条记录p_id==10,p_id=old_id=10的是第二天记录,把p_id更新成2

ringa_lee
ringa_lee

ringa_lee

全部回复(4)
高洛峰

很久没写Mysql的查询操作了,不过我有个想法,对于上面表中的记录,p_id和old_id是在一张表中,既要做比较操作还要做更新操作。建议:

第一步:根据主表拆分一张临时表 tmp_id, old_tmp_id(对应主表中的old_id)

  • tmp_id old_tmp_id

  • 1 30

  • 2 10

  • 3 20

第二步:左连接查询,where p_id == old_tmp_id, set p_id = tmp_id

天蓬老师

表名test

update test t1
inner join test t2 on t1.p_id = t2.old_id
set t1.p_id = t2.id

PHP中文网

一条SQL弄不了,就放在事务里,更新两次吧

阿神

UPDATE test t1
INNER JOIN test t2 ON t1.p_id = t2.old_id
SET t1.p_id = t2.id

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号