首页 > 解决方案 > SQL - 如果一个插入行不正确,则 SQL 语句已终止

问题描述

我正在尝试使用如下查询将数百行插入到表中:

Insert INTO tableX (column1, colum2)
VALUES 
((SELECT sysID FROM tableY where ID = var1), 1)
((SELECT sysID FROM tableY where ID = var2), 1)
et cetera

现在假设 var88 不存在,它将返回 NULL 作为 sysID,但是我不能在 column1 中插入 NULL,所以我得到一个错误,整个插入查询将被终止。有没有办法取消整个终止并跳过 sysID = NULL 的行?我确信我可以通过首先进行正确的选择,过滤掉 NULL 行然后插入,但是我想知道是否有其他方法可以做到这一点。

标签: sqlsql-serversql-insertbulkinsert

解决方案


您可以改用以下内容,使用 a INSERT INTO SELECT

INSERT INTO tableX (column1, colum2) 
    SELECT sysID, 1 
    FROM tableY 
    WHERE ID IN (va1, var2) AND NOT sysID IS NULL

推荐阅读