假設我是一個萌芽的口袋妖怪卡收集器,並且我使用SQL數據庫來跟蹤我的卡片。我給Pokemon的每個種類分配一個號碼,id
。我想跟蹤訂單我收集每種類型,所以我也爲每張卡分配一個序列號seqno
。我在貨架上展示這些卡片。如何在`delete from ... into`查詢中增加次序號?
create table shelf (
kind_id int not null,
seqno int not null
)
insert into shelf values (0, 1),
(0, 2),
(0, 3),
(1, 1),
(1, 2)
我只抓到了兩種口袋妖怪:三種第一種和兩種第二種。
當我去收集更多的卡,我把它們扔在一個袋子裏。
create table bag (
kind_id int not null,
)
insert into bag values (0),
(0),
(1),
(2) -- woot, caught a new one
很容易我所有的卡從包裏貨架移動...
delete from bag
output deleted.kind_id, -1
into shelf (kind_id, seqno)
select * from bag
...然後使用-1
提醒我要設置序列號,但我厭倦了手動設置。
我也是一個非常type-A編碼器,我不想編寫第二個查詢來更新序列號。我希望這一切都發生在「從包到貨架」的查詢中。
我知道這些限制聽起來很奇怪。我試圖提煉出一個更復雜的問題,所以希望這個故事有所幫助。
你的第一次插入到架子看起來像2卡,你說它是第一種和第二種之一第二?但它看起來像第一個3和第二個2。另外他們爲什麼分享seqnum?不應該更像'(0,1)(1,2)(1,3)'?還是你想seqnum只增加每個ID?無論哪種方式,我很困惑5插入= 3卡(我得到2個ID) –
不要從'bag'中刪除。添加一個'shelfId'列。袋子包含那些不是'NULL'的。 –
@Aaron Dietz你是對的,第一個3,第二個2,感謝你的支持。是的,我只希望seqnum每個ID增加,而不是整個表。 – mac9416