2016-07-28 53 views
0

我收到「#DateRange已經在數據庫中」的錯誤。我想要的是,如果#daterange2中有數據,則執行聯合,否則僅從#DateRange1中選擇。但目標表都將在#DateRange表中。 這裏是我的代碼:SQL服務器:如果EXISTS將x插入到表A中,否則將y插入到表A中

IF exists (SELECT * FROM #DateRange2) 
    SELECT * INTO #DateRange 
    FROM 
    (SELECT * FROM 
     #DateRange1 
    UNION 
    SELECT * FROM 
     #DateRange2 
    ) a 
ELSE 
    SELECT * INTO #DateRange 
    FROM 
     #DateRange1 

回答

0

呃,爲什麼與條件邏輯麻煩呢?只要這樣做:

SELECT * 
INTO #DateRange 
FROM (SELECT * 
     FROM #DateRange1 
     UNION 
     SELECT * 
     FROM #DateRange2 
    ) a; 

如果第二個表中沒有行,那麼沒有插入。

另外,檢查你是否真的需要UNION。一般而言,UNION ALL是首選 - 除非您真的想要刪除重複的開銷。

+0

因爲如果#daterange2不存在,聯合將不起作用 –

+0

@JaneZeng。 。 。你的'if'語句也不會。 –

相關問題