2017-08-08 7 views
3

CONTEXTin Tabelle einfügen mit Where-Klausel

Ich bin mit SQL Server Express zu verfolgen und aus Aktionen. Ich habe zwei Tabellen (Tabelle1, Tabelle2). Tabelle 1 enthält Schlüssel für ID und startTime, während Tabelle 2 ID, startTime und endTime enthält.

Wenn ein Eintrag erstellt wird, wird in Tabelle 1 eine Zeile mit allen Schlüsseln ausgefüllt. Diese Schlüssel werden dann in Tabelle 2 eingefügt.

PROBLEM

Das Problem, das ich zu laufen bin in ist, dass ich es erkennen will, ob nicht bereits die ID in Tabelle 2 vorhanden ist - und, wenn es die Zeile für die ID der Fall ist, aktualisieren statt ein neues erstellen.

AKTUELLE ARBEITS

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 

Vielen Dank im Voraus für jede Hilfe! Sorta neu in SQL, lassen Sie mich wissen, wenn es etwas gibt, was ich tun kann, um meine Frage zu verbessern.

+0

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

Antwort

2

Wie wäre es mit so etwas?

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

Vielen Dank für die schnelle Antwort! Es scheint, als würde der Code funktionieren Ich erhalte nur einen Fehler in der Zeile SET CURRENT_TIMESTAMP, die verhindert, dass er ausgeführt wird. Es heißt "Falsche Syntax in der Nähe des Schlüsselwortes CURRENT TIMESTAMP". – Yahtzee

+0

Eine kleine Änderung an Zeile 3 vorgenommen - ich habe nicht das table.field angegeben, das wir aktualisiert haben. – jdg

+0

Danke für Ihre Hilfe – Yahtzee