2017-10-03 10 views
2

Ich habe zwei Tabellen und ich verwende eine einfache Join-Bedingung zwischen ihnen.Wie aktualisiert man eine Spalte mit einem anderen Wert mit einer einfachen Join-Anweisung?

Ich muss die gemeinsamen Werte finden und die String (Erfolg) in die Spalte aktualisiert.

input_table1:

ID || Name || output 
1 || ABS || Null 
2 || ADF || NULL 
3 || AQS || Null 
4 || ATF || NULL 
5 || APS || Null 
6 || AMF || NULL 

Input_table2:

ID || Name 
1 || ABS  
2 || ADF 
6 || AMF  

output_table: Dies ist die Ausgabe ich brauche.

ID || Name || output 
1 || ABS || Success 
2 || ADF || Success 
3 || AQS || Null 
4 || ATF || NULL 
5 || APS || Null 
6 || AMF || Success. 

Dies ist die Abfrage ich benutze, und dies ist der Fehler Ein Ausdruck von Nicht-Typ boolean in einem Kontext angegeben empfängt, wo eine Bedingung zu erwarten ist, in der Nähe von ‚Then‘.

update .[dbo].[InputTable1] 
set Output= 
case when (
select INT.ID 
from [dbo].[input_table1] INT 
join [dbo].[input_table2] SHB 
on INT.ID=SHB.ID 
) Then 'Success' Else Null End 
+0

Gute Frage aktualisiert werden, auch Versuchen Sie, Beispiel-DML zu erstellen, DDL wie unten vorwärts gehen. 'create table # t1 ( id int, namee char (4), outp char (4) ) INSERT INTO # t1 1 auswählen, 'ABS', Null union all 2 auswählen, 'ADF' NULL \t Union all' – TheGameiswar

Antwort

5

Ihre Anfrage einfach

update INT 
set Output= 'Success' 
FROM 
[dbo].[input_table1] INT 
join [dbo].[input_table2] SHB 
on INT.ID=SHB.ID 

See working demo

3

...CASE WHEN <condition> = <value> THEN....

Sie fehlen <value> sollte ich vermute, Sie IS NOT NULL müssen nach Ihre Anfrage.

Das heißt, es ist nicht effizient. DhruvJoshi ist besser

1

I EXISTS und FROM hinter UPDATE für die

UPDATE it 
SET Output = (CASE WHEN exists(
     SELECT 1 
     FROM [dbo].[input_table2] SHB 
     WHERE it.ID=SHB.ID) 
    THEN 'Success' ELSE Null END) 
FROM [dbo].[InputTable1] it 
1

verwenden würden, können Sie ihn nur versuchen:

UPDATE 
    InputTable1 
SET 
    Output='Success' 
FROM 
    InputTable1 
    JOIN InputTable2 ON 
     InputTable1.ID=InputTable2.ID 

Nur verknüpften Zeilen werden

Verwandte Themen