SQL-SQL语句已被终止,如果一行插入不正确

问题描述 投票:0回答:2

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

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行然后执行插入来完成此操作,但是我想知道是否还有其他方法可以执行此操作。

sql sql-server sql-insert bulkinsert
2个回答
5
投票

您可以使用以下代码,使用INSERT INTO SELECT

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

0
投票

您在哪里/如何获得值的var1(etc)变量?

你可以将其转换为:

Insert INTO tableX (column1, colum2)
VALUES 
Select SELECT sysID, 1
Where ID IN (var1, var2, etc..)
WHERE sysID is not null

或者以某种方式将其构建为循环(取决于var1等来自何处/如何)

© www.soinside.com 2019 - 2024. All rights reserved.