我正在尝试向列中添加行,将order最新列设置为1,并将所有其他行从那里开始计数.
在这种情况下,我添加一个order = 0的新行,然后使用此查询将所有行更新为1.
"UPDATE favorits SET order = order+1"
Run Code Online (Sandbox Code Playgroud)
但是,所发生的是所有行都更新为相同的值.我得到了一堆收藏夹,例如订单6,当它应该是一个1时,下一个带2,依此类推.
如何更新这些行的方式按照它们的方式对它们进行排序?
谢谢,
〜乔丹
Jos*_*ian 45
SET @a = 0;
UPDATE favorits SET order = @a:=@a+1;
Run Code Online (Sandbox Code Playgroud)
Sim*_*mon 22
你告诉数据库做什么通过将其顺序字段递增1来更新表中的每条记录.所以每条记录总是具有相同的价值.我相信你试图将最新记录设置为1,将最旧的记录设置为(无记录+ 1).
所以也许你可以试试这个:
set @count = (SELECT COUNT(ID) from favorits);
UPDATE favourits SET order = @count-ID+1
Run Code Online (Sandbox Code Playgroud)
现在假设没有删除任何记录.在这种情况下,您必须对此进行调整并将最新记录设置为1,然后按ID排序每个先前记录的订单值.
所以这就是方法:
set @i=0;
set @Count=(SELECT COUNT(*) from favorits);
UPDATE favorits SET `order` = @Count-(@i:=@i+1)+1;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39371 次 |
| 最近记录: |