2011-07-20 32 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

相关问题