mysql 批量更改符合指定条件的记录的主键为一系列值
2016-06-21 11:29
471 查看
今天测试有一个奇葩的需求:
按客户id 去查询消息表,可以确定能查到两条记录,将这两条记录的主键 分别更改为998 和999
例如:表名 message
id customer_id ...
59 10010 ....
90 10010 ...
两条记录 不能说没有联系,客户id都是10010,并且即将被update的结果值 也是递增的,但我并没有想到什么更好的办法能写成一条sql语句,就采取一个比较笨的方式,用limit
update message set id = 999 where customer_id = 10010 limit 1;
update message set id = 998 where customer_id = 10010 and id != 999 limit 1;
回头得想想有没有啥办法 写成函数或者其他的什么的,弄成一条sql语句试试
网上查到的 有用 case then的,但是对当前要求不太合适,因为,查询到的 符合要求的主键 id的值 每次执行的时候很可能是不同的
按客户id 去查询消息表,可以确定能查到两条记录,将这两条记录的主键 分别更改为998 和999
例如:表名 message
id customer_id ...
59 10010 ....
90 10010 ...
两条记录 不能说没有联系,客户id都是10010,并且即将被update的结果值 也是递增的,但我并没有想到什么更好的办法能写成一条sql语句,就采取一个比较笨的方式,用limit
update message set id = 999 where customer_id = 10010 limit 1;
update message set id = 998 where customer_id = 10010 and id != 999 limit 1;
回头得想想有没有啥办法 写成函数或者其他的什么的,弄成一条sql语句试试
网上查到的 有用 case then的,但是对当前要求不太合适,因为,查询到的 符合要求的主键 id的值 每次执行的时候很可能是不同的
相关文章推荐
- MySQL数据库的优化(上)单机MySQL数据库的优化
- mysql和mysqli的区别
- MySQL的FROM_UNIXTIME()和UNIX_TIMESTAMP()函数的区别
- MySQL 查询优化: LIMIT 1 避免全表扫描提高查询效率
- mysql(二)
- mysql常用函数
- MySQL的时间差函数TIMESTAMPDIFF、DATEDIFF
- c3p0整合mysql报错问题
- mysql存储过程函数实例-轻松搞定mysql函数
- MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法
- MySQL自增长列,设置主键和索引
- mysql null和''区别
- Mysql5.7.9原生JSON格式支持
- MySQL命令行导入导出数据库
- mysql数据库主从配置与主从切换(在文章底)
- Redhat6.5下卸载Mysql5.6.31教程
- Redhat6.5下Mysql5.6.31主从复制教程
- MYSQL中取当前周/月/季/年的第一天与最后一天
- express 框架下使用mysql 保存页面抓取的数据
- RedHat6.5下Mysql_5.6.31安装教程