sql - 使用 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
我怎样才能做到这一点?
提前致谢最好的问候
解决方案
您可以创建一个临时表来存储 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 值。希望这是有道理的。