用mysql 怎样把表的 id字段的记录改为 1,2,3递增?
如原来是
+---------+
| id |
+---------+
| 24 |
+---------+
| 23 |
+---------+
| 53 |
+---------+
| 98 |
+---------+
改成
+---------+
| id |
+---------+
| 1 |
+---------+
| 2 |
+---------+
| 3 |
+---------+
| 4 |
+---------+
怎么写这个update,用循环?
如原来是
+---------+
| id |
+---------+
| 24 |
+---------+
| 23 |
+---------+
| 53 |
+---------+
| 98 |
+---------+
改成
+---------+
| id |
+---------+
| 1 |
+---------+
| 2 |
+---------+
| 3 |
+---------+
| 4 |
+---------+
怎么写这个update,用循环?
解决方案 »
- 数据库设计
- mysql有外键时分区出现错误Error Code : 1506
- 对供货商的名字进行模糊搜索,想找出他的商品的名字和价格
- 如何查询在一个数据库中某个字段存在于哪些表
- mysql 结果集问题
- 一个表字段很多,insert这个表时除了insert into (col1,col2,...) values(1,2,...);还有它法吗在MySql下
- 请问 redhat9 5432端口Ping 不通 怎么解决?(在线等待)
- 如何获得排名
- 请问postgresql数据库中 如何计算两个日期间的差距间隔
- update执行后语法错误
- 第一次运行 SQLYOG WIN7的系统 这个怎么解决啊? 错误:1045
- 寻三道mysql的笔试题?
update tb set id = (select count(1) from tb where id < t.id) + 1 from tb t
(
select row_id=row_number over(order by id),* from tb
)
update tb set id=row_id
我用 mysql 试了一下,报错,怎么修改一下? 另外这个逻辑我也看不太懂,比较菜
(select count(1) from tb where id < t.id) + 1
先想办法桉贴子中的方法得到下面结果,然后再做 update aa ,(select ......) b set aa.id=b.sno where aa.id=bb.id
+---------+---------+
| id | sno |
+---------+---------+
| 24 | 1 |
+---------+---------+
| 23 | 2 |
+---------+---------+
| 53 | 3 |
+---------+---------+
| 98 | 4 |
+---------+---------+
mysql> select @x:=ifnull(@x,0)+1 as rownum,id,col
-> from tbl
-> order by col;
+--------+----+------+
| rownum | id | col |
+--------+----+------+
| 1 | 1 | 26 |
| 1 | 3 | 35 |
| 1 | 2 | 46 |
| 1 | 4 | 68 |
| 1 | 6 | 92 |
| 1 | 5 | 93 |
+--------+----+------+应该这样查询才会递增
set @rownum=0;
select @rownum := @rownum+1 as rownum, id from user11;
两张表连起来update我还是第一次写。sql写得比较少。
使用联接查询(笛卡尔积)/子查询 看着挺晕的,刚才没细琢磨。我也是才看那篇文章,没想到提问时就遇到作者了,还真巧。ACMAIN_CHM 你的头像是老狼吗?看着还挺剽悍,我刚才看你的文章时想。>_< 。
意思是
但C/S如果connection一只保持则要考虑先 set @x=0
-------
还有那个“再次查询的时候需要初始化”我也不太明白。我用的是mysql querybrower,是C/S链接吧?
我又搜到关于 变量 的描述:
对于使用select语句为变量赋值的情况,若返回多条记录,则变量的值为最后一条记录的值,不过不建议在这种情况下使用;若返回结果为空,即没有记录,此时变量的值为上一次变量赋值时的值,如果没有对变量赋过值,则为NULL。
则变量的值为最后一条记录的值的话,@x 的二次就应该是1而不是null了,为什么那些rownum最后都是1呢?
看着还是比较抽象。