我想用「StudentID」的WHERE子句更新「StudentTable」中的「Grade」列,如果在「StudentTable」中找不到「StudentID」,那麼我要插入的數據,而不是更新或插入取決於記錄是否已存在
我怎樣才能做到這一點
我想用「StudentID」的WHERE子句更新「StudentTable」中的「Grade」列,如果在「StudentTable」中找不到「StudentID」,那麼我要插入的數據,而不是更新或插入取決於記錄是否已存在
我怎樣才能做到這一點
你先檢查該記錄是否存在,如果它執行更新, 如果它不存在,則表示您需要插入它。
在這裏你去:
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
在T-SQL中,註釋說明符是 - ,而不是撇號。開始/結束的東西在這裏沒有必要。但+1因爲這是一個很好的答案。 – hoodaticus
@hoodaticus - 對不起現在在vb.net應用上工作,在vb.net上的評論是'。對不起,如果不存在其他語句,則不需要開始/結束,他/她可能有其他代碼,以便他們可以確定是否離開開始/結束語句。 – JonH
我認爲這是VB泄漏:) – hoodaticus
你想做到這一點的平面SQL或者你有某種編程語言? – Dukeatcoding
請標記/指定您正在使用的SQL Server的版本 - 此信息在您的問題中始終有用。有「安全」的方法來實現這一點,但它們不一定有效,如果你在一箇舊版本的SQL Server。 –
[Atomic UPSERT in SQL Server 2005]可能的重複(http://stackoverflow.com/questions/2522379/atomic-upsert-in-sql-server-2005) –