我有一张简单的桌子,上面有一家餐厅可以在菜单上列出的特定类别(例如:开胃菜、饮料、主菜、沙漠、.)
Menu_restaurant_category的示例数据:
+----+------------+-------------+----------+
| ID | restaurant | category | sequence |
+----+------------+-------------+----------+
| 11 | 35 | MAIN COURSE | 1 |
| 12 | 35 | DESERTS | 2 |
| 13 | 35 | DRINKS | 3 |
| 14 | 35 | APPETIZERS | 4 |
+----+------------+-------------+----------+
我想让管理员选择类别将显示在菜单上的顺序。首先显示列sequence
中数字最高的行。
现在:假设我点击ID 11的向上按钮,ID 11应该得到序列2,ID 12应该得到序列1。相反的情况应该发生在按下按钮时。
在SQL中,我将如何做到这一点?
发布于 2022-12-25 17:31:59
对序列值使用步骤10。它允许在任意两个项之间插入值。
重新排序后重新计算序列。
将其全部包装在存储的例程中。
UPDATE menu_restaurant_category
SET sequence = sequence + 10 + 1 -- one row down and a bit more
WHERE ID = xxxxx; -- SP parameter
UPDATE menu_restaurant_category
SET sequence = @seq := @seq + 10 -- UDV counter
WHERE (@seq := 0) = 0 -- UDV initialization
ORDER BY sequence ASC;
https://dba.stackexchange.com/questions/321353
复制相似问题