sql - SQL - 如果不存在
问题描述
我在数据库中有一个表,其中存在一些记录。
当我添加新记录时,如果该记录存在于数据库中,我需要按“名称”列检查。如果这样的记录不存在 - 然后添加它,如果存在 - 然后更新。我正在尝试这样:
USE [TestDB]
GO
DECLARE @daily nvarchar = 'DailySummaryEmailProcessor'
IF NOT EXISTS ( SELECT *
FROM [dbo].Crons
WHERE name = @daily)
BEGIN
INSERT INTO [dbo].Crons (CronJobID, Name, Description)
VALUES()
END
ELSE
BEGIN
UPDATE [dbo].Crons
SET
WHERE
END
解决方案
MERGE 应该符合您的要求MERGE (Transact-SQL):
MERGE Crons AS target
USING (SELECT @Name) AS source (Name)
ON (target.Name = source.Name)
WHEN MATCHED THEN
UPDATE SET target.Name = source.Name
WHEN NOT MATCHED
INSERT INTO Crons (Name) VALUES (source.Name)
OUTPUT $action, deleted.Name, inserted.Name
推荐阅读
- python-3.x - 使用 GridSearchCv 优化 SVR() 参数
- javascript - 我需要在 POST 请求后调用页面渲染
- java - Java:如何解析 csv 文件以比较列中的数据
- android - android MapView + ViewPager2 + DataBinding 问题
- php - URL 路径重定向到主页,但在 PHP 中获取路径信息
- ios - 在 UITableView 中滚动时第一个和最后一个单元格更改颜色
- javascript - JavaScript URL searchParams 不返回任何内容
- ansible - Ansible 中的布尔启动参数
- corda - 更新到 Corda Enterprise - Web 服务器是否应将 CE 作为依赖项包含在内?
- linux - 如何使用 sed 在每个空格后添加一些文本?