特殊删除查询

时间:2013-08-05 17:03:51

标签: sql sql-delete

我有两张桌子:

  • 标签
  • tags_news(绑定)

我需要从id删除不包含tags table的数据。

示例

标签:1,2 tags_news:2

tags_news中没有id = 1的数据。我需要删除它。我不知道怎么回事。求你帮帮我。

3 个答案:

答案 0 :(得分:1)

您可以使用NOT EXISTS

DELETE tn FROM dbo.TagsNews tn
WHERE NOT EXISTS(
    SELECT 1 FROM dbo.Tags t
    WHERE t.ID = tn.ID
)

答案 1 :(得分:0)

delete from tags where id not in(select id from tags_new)

答案 2 :(得分:0)

您也可以使用Left 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