Oracle
使用空行的最大數量更新 Oracle DB
我有一個 Oracle 數據庫,我需要更新一些列,其中一個是必須是某種 id - 該列上的最大數字的數字。如果我使用這樣的東西:
update ss_chest ssc set SSC.NUMAR_CHEST = 'RO' || (select lpad(max(SSC.NUMAR_CHEST),5,'0') from ss_chest ssc where SSC.NUMAR_CHEST is not null) where SSC.NUMAR_CHEST is null;
結果總是一樣的,它用相同的最大 NUMAR_CHEST 更新我的表。如何始終使用最大數量更新它?(我必須將我的號碼與前面的 RO 並在 5 個空格上以 0 開頭)謝謝!
這是一次性更新,還是您計劃在插入後執行該查詢,其中插入語句未設置 SSC.NUMAR_CHEST?如果您想要升序數字,聽起來您需要使用 Oracle 序列;您的子查詢
(select lpad(...
將返回查詢開始時的最大值。要使用序列,請創建一次(使用
SEQ_CHEST
下面範例中的名稱),然後在更新中引用它;每次訪問時,SEQ_CHEST.nextval
您都會獲得一個唯一編號:create sequence SEQ_CHEST maxvalue 99999; -- one time deal update ss_chest ssc set SSC.NUMAR_CHEST = 'RO' || lpad(SEQ_CHEST.nextval,5,'0') where SSC.NUMAR_CHEST is null;
你的插入語句就像
insert into ss_chest values('A', 'B', ... 'RO' || lpad(SEQ_CHEST.nextval,5,'0'));