CS2009 用に SQL Server 2008 の一部のデータをクリーンアップするタスクがあります。プロファイル データベースには、2 つのテーブルがあります。
- 住所
ユーザーオブジェクト
住所:
address_id、line1、line2 GUID、varchar、varchar
ユーザー オブジェクト:
userid_id、addressguids、acitivtydate GUID、varchar、datetime
X よりも古い (つまり、アクティビティがなかった) すべての UserObjects を削除する必要があります。それは明らかに問題ではありません。私の問題は、その人に属するアドレスを削除したいときに発生します。これらは連結方式で 1 つのフィールドに格納されます。たとえば、ユーザーが 2 つのアドレスを持っている場合、次のようになります。
2;{guid1};{guid2}
最初の数字は GUID の数で、すべてセミコロンで区切られています。Address テーブルには、user_id を関連付けるためのフィールドがありません (非常に面倒です)。Address テーブルの唯一の ID はアドレス GUID です。
私の質問は、これを SQL でどのように整理できるかということです (私の SQL は少し貧弱です)。私はそれが次のようなものになると想像します:
- activitydate > X のすべてのユーザーを選択します
- アドレス GUID 文字列を引き離し、各 GUID を取得する
- アドレス テーブルの各 GUID を削除します
- ユーザーを削除
アドレスを削除するには、部分文字列または何かを削除して、最初の番号とセミコロンを削除し、残りのセミコロンをコンマに置き換えて、それを when IN 句に入れると思います。
ループ、それを行う最良の方法などについての手がかりはありません。
ありがとう