2016-03-04 202 views
3

任何建議讓這個工作?在語法上它是正確的,並且各個子查詢返回單個結果,但是當組合時,子查詢不會將結果返回給插入語句。基本上,我試圖將這些記錄插入表中,如果它們不存在於視圖中。選擇插入SQL Server子查詢

INSERT INTO PRG_T_BLK_MDL (BLK_ID, MDL_ID, GW, VE) 
    OUTPUT @@ROWCOUNT AS RC 
    SELECT (SELECT ID FROM PRG_T_BLK WHERE NAME=1), 
      (SELECT ID FROM PRG_T_MDL WHERE NAME='A'), 3500, 'AX' 
    FROM PRG_V_BLK_MDL 
    WHERE NOT EXISTS(SELECT 1 FROM PRG_V_BLK_MDL WHERE BLK=1 AND MDL='A' AND VER='AX') 
+0

您是否嘗試將此從不存在轉換爲EXCEPT? – websch01ar

回答

4

我猜測的OUTPUT子句的工作(我還沒有@@ROWCOUNT使用它,但它似乎確定)。

您不需要FROM子句 - 至少不是整個表。我可能會建議:

INSERT INTO PRG_T_BLK_MDL (BLK_ID, MDL_ID, GW, VE) 
    OUTPUT @@ROWCOUNT AS RC 
    SELECT (SELECT ID FROM PRG_T_BLK WHERE NAME = t.BLK), 
      (SELECT ID FROM PRG_T_MDL WHERE NAME = t.MDL), 3500, t.ver 
    FROM (SELECT 1 as BLK, 'A' as MDL, 'AX' as ver) t 
    WHERE NOT EXISTS (SELECT 1 
         FROM PRG_V_BLK_MDL v 
         WHERE v.BLK = t.BLK AND v.MDL = t.MDL AND v.ver = t.ver); 
+1

這樣做,謝謝! – James