我想更新我所有用户的sort_id。例如,因为有10个用户,我想分别指定sort_id从0到9。我可以在PHP中使用foreach来完成这一操作,但它会导致很多性能和时间问题。有没有一种方法可以做到这一点,而无需再次运行每个更新查询?
UPDATE users SET sort_id=LAST_INSERT_ID(sort_id)+1 WHERE id IN(100,101,102,103,104)
我真正想做的是
#id - #sort_id
100, 0
101, 1
102, 2
103, 3
104, 4
2条答案
按热度按时间7ajki6be1#
我不知道为什么要存储冗余数据,这些数据可以通过同一个表中另一列的值计算出来。数据冗余会导致数据异常和损坏,在关系数据库系统中应该始终避免。
如果只在客户端需要sort_id,只需使用简单的select。
如果确实要存储sort_id,请使用带有子查询得UPDATE:
flseospp2#
您可以使用
row_number()
函数:子查询为行分配一个序号,然后使用该序号更新
sort_id
列.