2015-07-15 2 views
2

Просто любопытно ... есть ли команда в TSQL, которая удалит строки, которые я только что выбрал из таблицы?TSQL Выберите Удалить

В псевдо SQL, что-то вроде

SELECT * FROM TableA THEN DELETE 

Или

SELECT * FROM TableA WITH (DELETEROWS) 

ПРИМЕЧАНИЯ: Я не просто хочу удалить строки, я хочу, чтобы вернуть строки в TempTable и затем удалите их, в том же заявлении

+2

'delete from tablea где pk_column in (выберите pk_column from tablea где ...)' –

+0

Вы просто меняете 'SELECT * ...' на 'DELETE ...' и повторно выполняете его. – RBarryYoung

+0

Я думаю, OP хочет вывести, а затем удалить, а не просто удалить. –

ответ

8

Вы можете получить строки, которые были только удалены с помощью t он output clause:

DELETE FROM TableA 
OUTPUT deleted.* --TODO name columns, identify table to insert into, etc 

Так, в целом должна быть такой же, только порядок операций восстанавливается.

+0

отлично. Точно, что я был после. Благодаря! – roryok

2

Вы можете использовать оператор OUTPUT в DELETE. Это позволит вам фиксировать все детали удаленных строк.

Если вы сначала сделаете SELECT, вам нужно будет захватить эти строки в таблицу, а затем удалить строки в таблице.

Если вы повторяете логику для SELECT, вы могли столкнуться с проблемами, потому что новые строки могут быть вставлены/изменено/удалено между SELECT и DELETE, так что два могут не быть последовательными.

-1
DELETE FROM Table1 
WHERE Day = '201507015' 

Это удалит все записи из таблицы с именем таблицей 1 день колонка, где запись в этой колонке на сегодняшний день - 20150715 (ГГГГММДД).

Смежные вопросы