我有一个类似以下的插入语句;
INSERT INTO Table1(Value1, Value2, Value3)
SELECT A.Value1, B.Value2, C.Value3
FROM Fn1 A
INNER JOIN Table2 B ON A.ID = B.AID
INNER JOIN Table3 C ON C.ID = B.CID
WHERE A.ID = 4
在上面的代码中,有可能实际上没有插入任何内容,例如,如果JOIN没有返回任何值。有没有办法可以输出Value1,Value2和Value3,即使插入失败?在这种情况下,MERGE和OUTPUT不会实际插入任何内容。
我试图将一些审计插入到一个更复杂的查询中,并使用动态计算的值,而不必重新编写它以先将值计算到变量中,所以想知道是否有像上面那样的快捷方式。
答案 0 :(得分:0)
试试这个:
INSERT INTO Table1(Value1, Value2, Value3)
SELECT A.Value1, B.Value2, C.Value3
FROM Fn1 A
FULL OUTER JOIN Table2 B ON A.ID = B.AID
FULL OUTER JOIN Table3 C ON C.ID = B.CID
WHERE A.ID = 4
答案 1 :(得分:0)
试试这个:
INSERT INTO Table1(Value1, Value2, Value3)
SELECT A.Value1, ISNULL(B.Value2,0), ISNULL(C.Value3,0)
FROM Fn1 A
LEFT JOIN Table2 B ON A.ID = B.AID
LEFT JOIN Table3 C ON C.ID = B.CID
WHERE A.ID = 4