Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 конструкция with delete  [new]
Sintetik
Member

Откуда: SpB->Msk->...
Сообщений: 9292
WITH CTE AS
(
SELECT *,row_number() over (...) rn
from #xxxxx m2
)
DELETE FROM CTE where rn>1


что делает эта конструкция? она рабочая?
удаляет строки из датасета CTE или из таблицы #xxxxx? удалять из датасета смысла нет, он же только на момент запроса существует
в чужом коде встретил, хочу понять это осмысленная конструкция или от балды воткнули
20 фев 19, 00:41    [21814977]     Ответить | Цитировать Сообщить модератору
 Re: конструкция with delete  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36694
Дубликаты эта конструкция удаляет.
Проверить заняло бы пару минут.

Сообщение было отредактировано: 20 фев 19, 01:27
20 фев 19, 01:26    [21815001]     Ответить | Цитировать Сообщить модератору
 Re: конструкция with delete  [new]
iap
Member

Откуда: Москва
Сообщений: 46953
Звёздочка там лишняя (хотя выполняться не мешает)
20 фев 19, 09:36    [21815133]     Ответить | Цитировать Сообщить модератору
 Re: конструкция with delete  [new]
iap
Member

Откуда: Москва
Сообщений: 46953
Sintetik
что делает эта конструкция? она рабочая?
удаляет строки из датасета CTE или из таблицы #xxxxx?
Если бы CTE было VIEW, и вы бы сделали ему DELETE, то что бы произошло?
Вот и здесь то же самое.
20 фев 19, 10:09    [21815157]     Ответить | Цитировать Сообщить модератору
 Re: конструкция with delete  [new]
aleks222
Member

Откуда:
Сообщений: 855
iap
Звёздочка там лишняя (хотя выполняться не мешает)

Вот не лень писать всякую ерунду.
Лучше бы объяснил неофиту

-- это
WITH CTE AS
(
SELECT *,row_number() over (...) rn
from #xxxxx m2
)
DELETE FROM CTE where rn>1

-- эквивалентно этому
DELETE FROM ( SELECT *,row_number() over (...) rn from #xxxxx m2) as CTE where rn>1
20 фев 19, 11:24    [21815223]     Ответить | Цитировать Сообщить модератору
 Re: конструкция with delete  [new]
iap
Member

Откуда: Москва
Сообщений: 46953
aleks222
iap
Звёздочка там лишняя (хотя выполняться не мешает)

Вот не лень писать всякую ерунду.
Лучше бы объяснил неофиту

-- это
WITH CTE AS
(
SELECT *,row_number() over (...) rn
from #xxxxx m2
)
DELETE FROM CTE where rn>1

-- эквивалентно этому
DELETE FROM ( SELECT *,row_number() over (...) rn from #xxxxx m2) as CTE where rn>1
Сразу понятнее становится, да?
Аналогия с VIEW более конструктивна.
20 фев 19, 11:27    [21815227]     Ответить | Цитировать Сообщить модератору
 Re: конструкция with delete  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8644
iap
Сразу понятнее становится, да?
Аналогия с VIEW более конструктивна.

+1
20 фев 19, 12:30    [21815288]     Ответить | Цитировать Сообщить модератору
 Re: конструкция with delete  [new]
Sintetik
Member

Откуда: SpB->Msk->...
Сообщений: 9292
iap
Sintetik
что делает эта конструкция? она рабочая?
удаляет строки из датасета CTE или из таблицы #xxxxx?
Если бы CTE было VIEW, и вы бы сделали ему DELETE, то что бы произошло?
Вот и здесь то же самое.

я знаю что произошло бы в oracle, а что в mssql нет, не работаю с ним, решил уточнить, спасибо теперь ясно
20 фев 19, 15:35    [21815518]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить