插入新行时移动mysql行?

时间:2015-07-31 06:23:10

标签: php mysql insert-update

让我们说我们有类似前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

实现这一目标的逻辑是什么?什么是最佳实践?

2 个答案:

答案 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