2011-07-20 127 views
1

我想用「StudentID」的WHERE子句更新「StudentTable」中的「Grade」列,如果在「StudentTable」中找不到「StudentID」,那麼我要插入的數據,而不是更新或插入取決於記錄是否已存在

我怎樣才能做到這一點

+0

你想做到這一點的平面SQL或者你有某種編程語言? – Dukeatcoding

+0

請標記/指定您正在使用的SQL Server的版本 - 此信息在您的問題中始終有用。有「安全」的方法來實現這一點,但它們不一定有效,如果你在一箇舊版本的SQL Server。 –

+0

[Atomic UPSERT in SQL Server 2005]可能的重複(http://stackoverflow.com/questions/2522379/atomic-upsert-in-sql-server-2005) –

回答

2

你先檢查該記錄是否存在,如果它執行更新, 如果它不存在,則表示您需要插入它。

在這裏你去:

IF EXISTS(SELECT * FROM StudentTable WHERE StudentID = @MyID) 
    BEGIN 
    --exists perform update 
    UPDATE StudentTable SET Grade = 'A+' WHERE [email protected] 
    --other code... 
    END 
ELSE 
    BEGIN 
    --record does not exist INSERT it 
    INSERT INTO StudentTable(MyID, Grade) VALUES (@MyID, 'A+') 
    --other code... 
    END 
+1

在T-SQL中,註釋說明符是 - ,而不是撇號。開始/結束的東西在這裏沒有必要。但+1因爲這是一個很好的答案。 – hoodaticus

+2

@hoodaticus - 對不起現在在vb.net應用上工作,在vb.net上的評論是'。對不起,如果不存在其他語句,則不需要開始/結束,他/她可能有其他代碼,以便他們可以確定是否離開開始/結束語句。 – JonH

+0

我認爲這是VB泄漏:) – hoodaticus

相關問題