Hi,
ich versuche ein MULTI-Update eines Feldes in einer Tabelle mit einer Bedingung WHERE IN (). Wenn ich die Werte direkt hineinschreibe geht es. Doch möchte ich mir diese mit einen Subselect dynamisch ermitteln und dies in Form eine XML-String zurückgeben lassen. Doch dies geht nicht:
update t6100_customer_main_grp set t6100_old_flag = 1 where t6100_id_pk in ('DE03','DE05') ----------------- update t6100_customer_main_grp set t6100_old_flag = 1 where t6100_id_pk in ( SELECT STUFF((SELECT ',''' + t6100_id_pk + '''' FROM t6100_customer_main_grp left join i6100_customer_main_grp on i6100_id_pk = t6100_id_pk where i6100_id_pk is null FOR XML PATH('')) ,1,1,'') AS i6100_id_pk ) -------------------- declare @str varchar(200) SELECT @str = STUFF((SELECT ',''' + t6100_id_pk + '''' FROM t6100_customer_main_grp left join i6100_customer_main_grp on i6100_id_pk = t6100_id_pk where i6100_id_pk is null FOR XML PATH('')) ,1,1,'') print @str update t6100_customer_main_grp set t6100_old_flag = 1 where t6100_id_pk in (@str)
Als ergebnis bekomme ich Folgendes:
(2 row(s) affected)
(0 row(s) affected)
'DE03','DE05'
(0 row(s) affected)
Welche Möglichkeiten gibt es, um in der Tabelle t2 alle zu markieren, die nicht in der tabelle t1 sind. in beiden Tabellen existieren die gleichen Felder, außer in t2, dort eben gibt es zusätzlich das Feld t6100_old_flag (bit).
Gruß Hipp
Gruß Hipp