2012-05-21 40 views
3

我想創建一個存儲過程,將採取一列a,b,c,d其中id = @id並插入一個新的行與a,b,c相同的值除了d將是不同的。從另一行插入行,除了一行?

在這種情況下,大約有50列,但只有一列需要不同。

+1

'插入MYTABLE(C1,C2,C3,C4,...,C50)選擇C1,C2,C3,C4,...,C49,@ customtable from mytable where id = @ id' – mellamokb

回答

5

假設dINT並且要插入,就是說,15,而不是無論是在dbo.oldtable,則:

INSERT dbo.newtable(a,b,c,d) 
    SELECT a,b,c,d = 15 
    FROM dbo.oldtable 
    WHERE id = @id; 

更可能的是一個變量,所以:

INSERT dbo.newtable(a,b,c,d) 
    SELECT a,b,c,d = @whatever 
    FROM dbo.oldtable 
    WHERE id = @id; 

對不起,但沒有簡寫說「除d外的所有列」......您需要單獨列出它們。如果打字是問題,那麼有一個簡單的方法來解決這個問題。打開對象資源管理器中,展開服務器,數據庫,表和有關表格,然後拖動列節點到查詢窗口:

enter image description here

現在,你只需要刪除該d列名單。

1

可能這會有所幫助 -

INSERT INTO tablename 
(a, b, c, d) 
VALUES 
(SELECT col1, col2, col3, 'newcolvalue' 
FROM tablename 
WHERE id = @id); 
相關問題