Quantcast
Channel: Für Entwickler: SQL Server Forum
Viewing all articles
Browse latest Browse all 1772

SQL-Statement mit WHERE in (@string) geht nicht

$
0
0

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


Viewing all articles
Browse latest Browse all 1772

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>