给定一个示例表,例如:
CREATE TABLE TESTING_Order(
Order INT,
Name VARCHAR(5)
)
INSERT INTO TESTING_Order
VALUES
(0, 'Zero'),
(1, 'One'),
(2, 'Two'),
(3, 'Three'),
(4, 'Four'),
(5, 'Five'),
(6, 'Six'),
(7, 'Seven')
我想知道如何实现一种“堆栈”来显示,例如,在第一个玩家每回合“向左”移动的游戏中的回合顺序。我可以使用两个更新语句来完成此操作:
UPDATE TESTING_Order
SET Order = Order + 1
UPDATE TESTING_Order
SET Order = (SELECT Min(Order) -1 FROM TESTING_Order)
WHERE Order = (SELECT MAX(Order) FROM TESTING_Order)
我想知道是否有更清洁/更合适的方法来做到这一点,特别是如果可以使用单个 UPDATE 语句来完成其他方式。
换句话说,我认为我所追求的是一个更好的 LIFO Stack 实现,它对每个 pop 执行推送——请原谅我可能会扼杀任何术语。