在這個表中,有一個名爲'position'的列。 (第一行有位置0,第二行有1等)如何在MySQL更新語句中選擇同一個表
現在,如果位置4的行向上移動,我想設置上面的行(位置3的行)到當前位置。 (所以3位變成4位。)
因此,例如:
我:
id = 12, position = 2
id = 11, position = 3
id = 9, position = 4
id = 8, position = 5
更新後我想:
id = 12, position = 2
id = 11, position = 4
id = 9, position = 3
id = 8, position = 5
我想使用id的行,更新位置。
這是我得到了什麼,但它並沒有在MySQL的工作:當我嘗試運行它
UPDATE message
SET position = position + 1
WHERE position = (SELECT position - 1 FROM message WHERE id = 11);
,它給了我這個錯誤:「SQL錯誤(1093):可以'指定目標表'消息'在FROM子句中更新'。
我該如何解決這個問題?
「它在MySQL上不起作用」是什麼意思?任何錯誤信息,或只是沒有做你期望的?請詳細說明一些示例數據 – Yahia
我已經添加了錯誤消息。 – Ivar
這是一個已知的問題...嘗試我的答案下面(不知道它的工作原理雖然) – Yahia