2013-06-06 2 views
1

Хотелось бы удалить результаты SQL Query.Хотели бы удалить результаты с SQL Select Query

Вот запрос.

SELECT Name.ID, Name.FULL_NAME, Name.CHAPTER, Subscriptions.BEGIN_DATE, Name.MEMBER_TYPE, Subscriptions.PRODUCT_CODE 
FROM test.dbo.Name Name INNER JOIN test.dbo.Subscriptions Subscriptions ON (Name.ID=Subscriptions.ID) AND (Name.BT_ID=Subscriptions.BT_ID) 
WHERE Name.MEMBER_TYPE='DUPE' 
ORDER BY Name.ID 

Вот версии Microsoft, которые я использую:

  • Microsoft Windows 7
  • среды SQL Server Management Studio 2012 11.0.3
  • Операционная система 6.1.7601

Заранее спасибо за вашу поддержку.

+0

Не такой тривиальный вопрос, он просит удалить строки из двух таблиц. – Andomar

+1

Вы хотите удалить обе записи в именах и подписках. Если только одна таблица, какая? – billinkc

+1

«DELETE» может влиять только на одну таблицу в любое время, если не установлены ограничения внешнего ключа с правильно выполненными каскадными действиями. Вы пытаетесь удалить из одного стола или обоих? –

ответ

3

Похоже, вы идентифицируете строки по парам (ID, BT_ID). Храните что в табличную переменную:

declare @to_delete (id int, bt_id int); 
insert @to_delete 
select n.id 
,  n.bt_id 
from Subscriptions s 
join Name n 
on  n.id = s.id 
     and n.bt_id = s.bt_id 
where n.member_type = 'DUPE' 

Затем удалите из обеих таблиц:

delete s 
from Subscriptions s 
join @to_delete td 
on  td.id = s.id 
     and td.bt_id = s.bt_id 

delete n 
from Name n 
join @to_delete td 
on  td.id = n.id 
     and td.bt_id = n.bt_id 
+0

Большое вам спасибо! 8 ^) – scottgobucks

0

последний ответ на правильном пути, но может сделать намного проще

SELECT Name.ID, Name.BT_ID 
INTO #dump 
FROM Name Name 
INNER JOIN Subscriptions Subscriptions 
    ON (Name.ID=Subscriptions.ID) AND (Name.BT_ID=Subscriptions.BT_ID) 
WHERE Name.MEMBER_TYPE='DUPE' 

delete s from subscriptions s join #dump t on t.BT_ID = s.BT_ID and t.ID = s.ID 
delete n from from Name n join #dump t on t.BT_ID = n.BT_ID and t.ID = n.ID 

нет никаких оснований объявите временную таблицу, просто используйте элемент select, чтобы создать его только в области видимости, и таблица перестанет работать, когда вы закончите. легко.

+0

Спасибо. Очень признателен! – scottgobucks