次のようなテーブルの例を考えます。
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')
たとえば、最初のプレーヤーが各ターンで「左」に移動するゲームのターン順序を表示するために、一種の「スタック」を実装する方法を知りたいです。これは、2つの更新ステートメントを使用して実行できます。
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スタックのより良い実装だと思います。