2017-08-08 77 views
3

背景插入到表格使用Where子句

我使用SQL Server Express跟蹤進出動作。我有兩個表格(table1,table2)。 Table1包含ID和startTime鍵,而Table2包含ID,startTime和endTime。

無論何時進行輸入,都會在Table1中使用所有鍵填充一行。這些鍵然後插入到表2中。

問題

我到運行中的問題是,我希望它能夠識別ID是否已經存在於表2 - 並且,如果這樣做,更新該ID的行,而不是創造一個新的。

現工作

IF(COUNT(DISTINCT ID) > 1 --When ID has been seen more than once? 
    INSERT INTO Table2(ID, startTime) 
    SELECT ID, CURRENT_TIMESTAMP 
    FROM Table1 
    WHERE ID = Table2.PTID 

ELSE 
    INSERT INTO Table2(ID, startTime) 
    SELECT ID, CURRENT_TIMESTAMP 
    FROM Table1 

在此先感謝您的幫助!分類新SQL,讓我知道如果有什麼我可以做,以改善我的問題。

+0

看看MERGE https://docs.microsoft.com/en-us/sql/t-sql/statements/merge-transact-sql – Horaciux

回答

2

這樣的事情呢?

IF EXISTS (SELECT ID FROM Table2) 
    Update Table2 
    SET Table2.CURRENT_TIMESTAMP = Table1.CURRENT_TIMESTAMP --However you want to update 
    FROM Table2 tab2 
    JOIN Table1 tab1 on Table1.ID = Table2.PTID 
ELSE 
    INSERT INTO Table2(ID, startTime) 
    SELECT ID, CURRENT_TIMESTAMP 
    FROM Table1 
+0

感謝您的快速反應!看起來代碼會起作用我只是在SET CURRENT_TIMESTAMP行發生錯誤,導致它無法運行。它表示「關鍵字CURRENT TIMESTAMP附近的語法不正確」。 – Yahtzee

+0

對第3行做了一個小的編輯 - 我沒有指定我們正在更新的table.field。 – jdg

+0

感謝您的幫助 – Yahtzee