使用單一SQL 查詢重新排序記錄
在有「位置」欄位來排序其外觀的食品表中,單一SQL查詢可以基於對單一記錄的變更來更新多個記錄。這對於重新排序特定清單中的項目特別有用。
假設我們有一個像這樣的表:
id | listID | name | position |
---|---|---|---|
1 | 1 | cheese | 0 |
2 | 1 | chips | 1 |
3 | 1 | bacon | 2 |
4 | 1 | apples | 3 |
5 | 1 | pears | 4 |
6 | 1 | pie | 5 |
要將梨子移到薯條之前,我們可以增加之間所有項目的位置1。
但是,大多數解決方案都涉及多個查詢,這可能效率低下。相反,可以使用單一查詢對記錄重新排序:
UPDATE my_table SET position = position + CASE WHEN name = 'pears' THEN -3 ELSE 0 END WHERE listID = 1 AND position BETWEEN 1 AND 4;
此公式確保梨子移動到位置 1,並且梨子和薯片之間的所有項目都會相應遞增。
到重新排序任何項目,只需將「pears」替換為要移動的項目的名稱,並根據需要調整差異。
以上是如何使用單一 SQL 查詢對錶中的記錄重新排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!