首页 > 解决方案 > 使用 NULL 值从 select 中插入 SQL

问题描述

在我的时区下午好。

我必须在表中插入一行,但其中一列是另一个表中的值。所以我想要完成的是这样的

INSERT TABLE_NAME(COL1,COL2,COL3,COL4) VALUES("VAL1","VAL2","VAL3",(SELECT COL_A FROM TABLE2 WHERE COL_B = 'X'))

但我认为上面的代码是不可能的,所以我使用下面的代码:

INSERT INTO TABLE_NAME(COL1,COL2,COL3,COL4) 
SELECT "COL1","COL2","COL3", COL_A FROM TABLE2 T2
WHERE COL_B= "X"

我的问题是:即使选择不返回值,我也想插入值,在这种情况下,COL4 将为 NULL

我怎样才能做到这一点?

提前致谢最好的问候

标签: sqlsql-insertsap-ase

解决方案


您可以创建一个临时表来存储 TABLE2 的主键(例如 TABLE2 有主键 'X'、'Y')

CREATE TABLE #TempPK (COLB int null);

insert into #TempPK(COLB) values ('X');
insert into #TempPK(COLB) values ('Y');

--然后你在你的 insert select from 语句上做一个 FULL OUTER JOIN

INSERT INTO TABLE_NAME(COL1, COL2, COL3, COL4) 
    SELECT "COL1","COL2","COL3", MAX(COL_A)
    FROM TABLE2 T2 FULL OUTER JOIN  #TempPK TPK
    ON T2.COL_B = TPK.COLB

这样,您应该能够插入两个行(X 和 Y),并且行 X 应该在整个行中显示 NULL 值。希望这是有道理的。


推荐阅读