0
我正在使用可排序的jQuery對我的表的行進行排序。新訂單保存在後端,我使用python,Django。我在我的數據庫中有一列叫做priority.
在MySQL上多次更新而不覆蓋數據
這就是我如何處理後端的邏輯。最後一個數組是一個二維的名單基本上,我想下面的情況發生:
previous_order = [ 1,2,3,4,5 ]
new_order = [3,4,5,1,2]
orders_to_rearrange = [ ### gets passed in a function
[1,3], [2,4], [3,5], [4,1], [5,2]
]
### UPPDATE the following:
### Priority 1 to become 3
### Priority 2 to become 4
### Priority 3 to become 5
### Priority 4 to become 1
### Priority 5 to become 1
以上是一個糟糕的榜樣,但是當我遇到這樣一個複雜的開關:後
### Priority 5 to become 2
### Priority 2 to become 4
### Priority 4 to become 1
注意如何5變成2,4變成2,以及5變成2。現在我最終得到兩個優先級2,因爲它覆蓋循環內的語句。
我雖然在MySQL中WHEN THEN case語句將有所幫助,但它最終會做同樣的事情,因爲我循環。
UPDATE my_table
SET priority =
CASE priority
%s
ELSE priority
END
注意:我有一個函數將我的二維數組轉換爲WHEN __ THEN __語句,並將替換該%s模式。
任何人都可以請給我一個建議,如何在一個語句中同時更新行,而不會覆蓋數據?
非常感謝!
不是100%肯定你通過更新行,而不會覆蓋數據的意思,但我認爲你可能在使用案例陳述方面走在了正確的軌道上......至少就我理解的問題而言。 '更新MY_TABLE 設定的優先級=情況下,當優先級= 1,則3 \t \t \t \t \t \t \t \t \t \t \t當優先級= 2,則4 \t \t \t \t \t \t \t \t \t \t \t當優先級= 3然後5 \t \t \t \t \t \t \t \t \t \t當優先級= 4,則1 \t \t \t \t \t \t \t \t \t \t \t當優先級= 5然後1,否則優先端 其中優先> 0;'。 – JuveLeo1906
嗨@ JuveLeo1906這將得到執行一行行或全部在同一時間?出於某種原因,當我刷新我的頁面時,訂單不會相應地保存。我不知道我的UPDATE語句中的哪個部分正在破壞。 – Marvin
因爲它是一個語句,所以它會同時更新。也許你在刷新頁面之前缺少提交語句? – JuveLeo1906