我再次遇到問題:D 有點信息優先: 即時嘗試將數據從一個表複製到另一個表(結構相同)。 現在需要增加一個單元,每個單元在1處開始(就像歷史一樣)。每個對象計數一個對象
我有這個表:
create table My_Test/My_Test2 (
my_Id Number(8,0),
my_Num Number(6,0),
my_Data Varchar2(100));
(添加my_id,my_Num是一個嵌套PK)
如果我想插入新行,我需要檢查,如果在my_id
值已經存在。
如果這是真的,那麼我需要使用下一個my_Num
這個Id。
我有這個在我的表:
My_Id My_Num My_Data
1 1 'test1'
1 2 'test2'
2 1 'test3'
如果我現在連續加爲my_Id
1,行是這樣的:
My_Id My_Num My_Data
1 3 'test4'
: 我在我的表有這樣的這聽起來很容易,現在我需要使它在一個SQL 和SQL Server上我有同樣的問題,我用這個:
Insert Into My_Test (My_Id,My_Num,My_Data)
SELECT my_Id,
(
SELECT
CASE (
CASE MAX(a.my_Num)
WHEN NULL
THEN 0
Else Max(A.My_Num)
END) + b.My_Num
WHEN NULL
THEN 1
ELSE (
CASE MAX(a.My_Num)
WHEN NULL
THEN 0
Else Max(A.My_Num)
END) + b.My_Num
END
From My_Test A
where my_id = 1
)
,My_Data
From My_Test2 B
where my_id = 1;
01如果沒有行被子選擇
發現
這個選擇給空回有沒有辦法讓我的情況下使用最大?如果它返回null應該使用0或1?
編輯: 林usung現在這個:
Insert INTO My_Test (My_Id,My_Num,My_Data)
SELECT B.My_Id,
(
SELECT COALESCE(MAX(a.My_Num),0) + b.my_Num
FROM My_Test A
Where a.My_Id = b.My_Id)
,b.My_Data
FROM My_Test2 B
WHERE My_Id = 1
THX到巴拉特和OMG小馬
迎接
AURO
它確實有效,但是如果表中不存在ID,所有插入的行都會有'null' – domiSchenk 2010-06-08 06:57:20
我認爲您必須將ID作爲主鍵。 – Bharat 2010-06-08 07:21:40
Id是具有my_Num的羣集PK – domiSchenk 2010-06-08 08:50:14