让我们说我们有类似前100名的表,我们将这个等级保持在表格中。我明白了;
Singer|AlbumName|Rank(unique)
Eminem|xxxxxxxxx|1
Dr.Dre|×××××××××|2
50cent|xxxxxxxxx|3
..................
..................
Usher |xxxxxxxxx|99
Bieber|i'm b*tch|100
我想要做的是插入一个新行时如何更新他们的等级?换掉所有其他行的等级?
Singer|AlbumName|Rank(unique)
Eminem|xxxxxxxxx|1
Sdog |xxxxxxxxx|2
Dr.Dre|×××××××××|3
50cent|xxxxxxxxx|4
..................
Usher |xxxxxxxxx|100
实现这一目标的逻辑是什么?什么是最佳实践?
答案 0 :(得分:2)
如果有人以后需要,我找到了解决方案;
UPDATE `album` SET `rank`= rank + 1 WHERE rank >= $rankOfNewAlbum ORDER BY rank DESC
通过执行此操作,您开始更新行bacwards并且没有错误,因为没有匹配等级。
然后我们可以插入新行。
感谢mario.klump的贡献和灵感。
答案 1 :(得分:1)
如果您知道新专辑的排名,可以在插入新专辑前进行更新:
UPDATE album SET rank = rank + 1 where rank >= $rankOfNewAlbum