0

メールがハード バウンスされたすべてのメンバーの ID を取得するスクリプトを作成する必要があります。それをするために、私はこれを書きました

 Select id FROM Members m
 Join tbl_memberlanguageid mli on m.ID = mli.MLI_MemberID 
 Where Cast(dateCreated as date) >= '01-Dec-2014'
 and mli.MLI_LanguageID = 3 
 and EmailHardBounces = 1

次に、この ID のリストを使用して、それらをテーブル メンバーから削除する必要があります。ID がそのリストにある場合、メンバーから ID に関連するすべてを削除するように、このスクリプトを作成するにはどうすればよいですか?

4

3 に答える 3

2

を次のように変更できSelect idますDelete m

BEGIN TRAN

DELETE  m
FROM    Members m
        JOIN tbl_memberlanguageid mli ON m.ID = mli.MLI_MemberID
WHERE   CAST(dateCreated AS DATE) >= '01-Dec-2014'
        AND mli.MLI_LanguageID = 3
        AND EmailHardBounces = 1

ROLLBACK
COMMIT

削除をコミットする前に、レコード数が正しいことを確認してください。

于 2014-12-12T15:23:12.243 に答える
2

私が削除しようとしているものを見ることができるので、私はCTEが好きです:

WITH MemberIdsToDelete AS
(
     Select id FROM Members m
     Join tbl_memberlanguageid mli on m.ID = mli.MLI_MemberID 
     Where Cast(dateCreated as date) >= '01-Dec-2014'
     and mli.MLI_LanguageID = 3 
     and EmailHardBounces = 1
)
SELECT id FROM MemberIdsToDelete

最終的にそれらを削除したい場合は、置き換えます

SELECT id FROM MemberIdsToDelete

DELETE FROM Members WHERE id IN (SELECT id FROM MemberIdsToDelete).

于 2014-12-12T15:25:25.580 に答える
1

別の方法:

DELETE FROM Members WHERE ID IN(Select id FROM Members m
Join tbl_memberlanguageid mli on m.ID = mli.MLI_MemberID 
Where Cast(dateCreated as date) >= '01-Dec-2014'
and mli.MLI_LanguageID = 3 
and EmailHardBounces = 1)
于 2014-12-12T15:25:32.557 に答える