使用單一SQL 查詢對記錄重新排序
在帶有「位置」欄位以對其外觀進行排序的食品表中,單一SQL 查詢可以基於對單一記錄的變更來更新多個記錄。這對於重新排序特定清單中的項目特別有用。
假設我們有一個像這樣的表這個:
id | 列表ID | 名稱 | 位置 |
---|---|---|---|
1 | 1 | 起司 | 0 |
2 | 1 | 薯條 | 1 |
3 | 1 | 培根 | 2 |
4 | 1 | 蘋果 | 3 |
5 | 1 | 梨子 | 4 |
6 | 1 | 派 | 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' 替換為要移動的項目的名稱,並根據需要調整差異。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3