用sql server语句判断表中是否存在此条数据,如果存在就修改否则就新增
时间: 2024-01-21 20:18:27 浏览: 71
可以使用SQL Server中的MERGE语句来实现此需求。MERGE语句可以根据条件将数据进行更新或插入,具体用法如下:
```
MERGE [目标表] AS target
USING (SELECT [列1], [列2], ... FROM [来源表]) AS source
ON target.[关键列] = source.[关键列]
WHEN MATCHED THEN
UPDATE SET target.[列1] = source.[列1], target.[列2] = source.[列2], ...
WHEN NOT MATCHED THEN
INSERT ([列1], [列2], ...) VALUES (source.[列1], source.[列2], ...)
```
其中,`目标表`为要进行操作的表,`来源表`为提供数据的表,`关键列`为用来判断是否存在数据的列,`列1`、`列2`等为要更新或插入的列。
例如,假设要将`Student`表中学号为`1001`的学生的成绩更新为`90`,如果该学生不存在,则插入一条新的记录,可以使用以下代码:
```
MERGE Student AS target
USING (SELECT '1001' AS StudentID, 90 AS Score) AS source
ON target.StudentID = source.StudentID
WHEN MATCHED THEN
UPDATE SET target.Score = source.Score
WHEN NOT MATCHED THEN
INSERT (StudentID, Score) VALUES (source.StudentID, source.Score);
```
这段代码中,`Student`表中必须包含`StudentID`和`Score`两个列,且`StudentID`为主键或唯一索引列。如果学号为`1001`的学生已经存在,则会将其成绩更新为`90`;否则,会插入一条学号为`1001`,成绩为`90`的新记录。
阅读全文