2013-08-05 4 views
0

У меня есть две таблицы:Специальный запрос удаления

  • теги
  • tags_news (связывание)

нужно удалить данные, которые не содержит id от tags table.

Пример:

метки: 1, 2
tags_news: 2

Там нет данных с ID = 1 в tags_news. И мне нужно удалить это. Я не знаю, как это сделать. Пожалуйста, помогите мне.

+0

Какие СУБД вы используете? –

+0

Вы хотите удалить из тегов, не так ли? – christiandev

+0

@ Джон Смит, вы можете подтвердить таблицу, которую хотите удалить? – christiandev

ответ

1

Вы можете использовать NOT EXISTS

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

следует ли это удалить из «Теги» - или я прочитал это неправильно? – christiandev

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 
Смежные вопросы