0

私は2つのテーブルを持っています:

  • タグ
  • tags_news(バインディング)

idを含まないデータを削除する必要がありますtags table

タグ: 1, 2
tags_news: 2

tags_news に id=1 のデータはありません。そして、これを削除する必要があります。方法がわかりません。私を助けてください。

4

3 に答える 3

1

使用できますNOT EXISTS

DELETE tn FROM dbo.TagsNews tn
WHERE NOT EXISTS(
    SELECT 1 FROM dbo.Tags t
    WHERE t.ID = tn.ID
)
于 2013-08-05T17:05:23.070 に答える
0
delete from tags where id not in(select id from tags_new)
于 2013-08-05T17:06:20.570 に答える
0

aLeft joinも使用できます。以下を参照してください。

DECLARE @tags TABLE ( id INT )
DECLARE @tags_news TABLE ( id INT )

INSERT  INTO @tags
        ( id )
VALUES  ( 1 )
INSERT  INTO @tags
        ( id )
VALUES  ( 2 )
INSERT  INTO @tags
        ( id )
VALUES  ( 3 )
INSERT  INTO @tags_news
        ( id )
VALUES  ( 2 )

DELETE  t
FROM    @tags AS t
        LEFT JOIN @tags_news tn ON t.id = tn.id
WHERE   tn.id IS NULL

SELECT  id
FROM    @tags
于 2013-08-05T17:16:34.827 に答える