2015-07-31 4 views
1

Допустим, у нас есть таблица типа 100, и мы держим этот ранг в таблице.Сдвиг строк mysql при вставке новой строки?

Singer|AlbumName|Rank(unique) 
Eminem|xxxxxxxxx|1 
Dr.Dre|×××××××××|2 
50cent|xxxxxxxxx|3 
.................. 
.................. 
Usher |xxxxxxxxx|99 
Bieber|i'm b*tch|100 

Что им пытаются сделать, когда вставка новой строки, как я могу обновить свой ранг? Shifting ранг всех других Роу?

Singer|AlbumName|Rank(unique) 
Eminem|xxxxxxxxx|1 
Sdog |xxxxxxxxx|2 
Dr.Dre|×××××××××|3 
50cent|xxxxxxxxx|4 
.................. 
Usher |xxxxxxxxx|100 

Для достижения этой цели логика? И в чем лучшая практика?

+0

Основано на каких качествах вы дадите оценку? – Wanderer

+0

Yeap его на основе полностью моего желания – user54539

ответ

1

Если вы знаете, звание нового альбома, вы можете сделать UPDATE перед установкой нового альбома:

UPDATE album SET rank = rank + 1 where rank >= $rankOfNewAlbum 
+1

его не то, что им нужно, но я полагаю, он может быть изменен с помощью некоторого кода php, тогда он работает. Потому что в этой версии он дает ошибку, потому что мы пытаемся обновить ранжирование, которое уже существует.Dr .Dre второй, и мы пытаемся сделать его третьим, но 50cent является третьим. Я думаю, мы должны начать обновление с конца до $ rankOfNewAlbum – user54539

2

Я нашел решение, если кому-то нужен позже;

UPDATE `album` SET `rank`= rank + 1 WHERE rank >= $rankOfNewAlbum ORDER BY rank DESC 

делая это, вы начинаете обновление строк bacwards и нет никакой ошибки, потому что нет matcing ранга.

Затем мы можем вставить новую строку.

Спасибо за mario.klump за вклад и вдохновение.