2017-08-08 74 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