sql-server - 在插入之前检查列是否包含值 T-SQL
问题描述
我有一个这样的存储过程:
SET NOCOUNT ON;
BEGIN TRAN;
INSERT INTO [TaskNotification] (TaskId, EmpKey)
SELECT
TaskId, E.EmpKey
FROM
@TaskNotificationTableType TNT
INNER JOIN
Employee E ON E.EmpGuid = TNT.EmpGuid;
COMMIT TRAN
例如,我想知道如何在插入值之前检查我的列E.EmpKey
值是否存在
IF (E.EmpKey EXISTS)
// DO NOTHING
ELSE
INSERT INTO [TaskNotification] (TaskId, EmpKey)
SELECT
TaskId, E.EmpKey
FROM
@TaskNotificationTableType TNT
INNER JOIN
Employee E ON E.EmpGuid = TNT.EmpGuid;
我怎样才能实现它?问候
解决方案
如果您的意思是EmpKey
不必为NULL,Employee
那么过滤就WHERE
足够了。
INSERT INTO [TaskNotification] (TaskId, EmpKey)
SELECT
TaskId, E.EmpKey
FROM
@TaskNotificationTableType TNT
INNER JOIN
Employee E ON E.EmpGuid = TNT.EmpGuid
WHERE
E.EmpKey IS NOT NULL;
TaskNotification
如果您的意思是如果记录已经存在,您不想在其中插入记录,请使用WHERE NOT EXISTS
.
INSERT INTO [TaskNotification] (TaskId, EmpKey)
SELECT
TaskId, E.EmpKey
FROM
@TaskNotificationTableType TNT
INNER JOIN
Employee E ON E.EmpGuid = TNT.EmpGuid
WHERE
NOT EXISTS (SELECT 'not in TaskNotification yet' FROM [TaskNotification] T
WHERE T.EmpKey = E.EmpKey)
推荐阅读
- android - 返回命令和变量 adb Shell
- c# - 如何在 Azure 中返回简单的时间戳输出?
- google-cloud-vision - TextAnnotation blocktype 仅显示文本
- bash - 默认的 root bash 提示符是什么?
- linux - 如何在shell脚本中使用带有某些条件的循环
- html - 我如何创建两个 div 彼此相邻
- assembly - 带有数组的 MIPS while 循环
- html - 链接样式的 CSS 特性
- google-play - Google Play 商店状态 ---> 此项目与您的设备不兼容,该设备应该用于可穿戴设备
- machine-learning - 如何对机器学习的数据进行过采样 - 回归模型(不是分类!)