2013-02-01 64 views
0

假設我們有一個表:MySQL的行的次序重新計算

announces_id announces_pos announces_title 

如何通過重新計算單個查詢所有announces_pos?例如: 例如: 在id 2上將announces_pos設置爲3,應重新計算所有下一行(announces_pos> 3)

+2

Re計算方法如何?或者你是如何達到id 2的值3的? –

+0

這個問題不清楚(至少對我而言)。 – psur

+0

這是從來沒有介意,假設你有ID爲2的announces_pos = 100,當用戶將其改爲50時,我們需要增加50和100之間的所有行announces_pos's – Joeeee

回答

1

您需要舊的位置。比新舊版本之間的所有位置增加1.

DO @old_pos:=announces_pos FROM announces WHERE announces_id = 2; 
UPDATE announces SET announces_pos = IF(announces_id = 2, 3, announces_pos + 1) WHERE announces_pos BETWEEN 3 AND @old_pos; 
+0

請問你能解釋一下這是什麼意思:IF(announces_id = 2,3,announces_pos + 1) – Joeeee

+0

它會將announces_id加1,就像'announces_pos = announces_pos + 1 ',除了announces_id 3,'announces_pos = 3'。 –