我想用“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) –