Delete from: кто объяснит как это работает?

Winnipuh

т.е. какие записи будут удалены из таблицы? delete from members_ where exists ( select * from lists_ where lists_.Name_ = members_.List_ and MemberType_ = 'held' and lists_.CleanDays_ > 0 and GetDate() - lists_.CleanDays_ > members_.DateHeld_ )
4 ответа

Winnipuh

те, для которых выполнится условие where :)что именно непонятно-то?


Winnipuh

т.е. какие записи будут удалены из таблицы? delete from members_ where exists ( select * from lists_ where lists_.Name_ = members_.List_ and MemberType_ = 'held' and lists_.CleanDays_ > 0 and GetDate() - lists_.CleanDays_ > members_.DateHeld_ )
Так понятней?
delete M
from members_ M, lists_ L
where
 L.Name_ = M.List_
 and L.MemberType_ = 'held'
 and L.CleanDays > <b>0</b> -- Можно убрать
 and M.DateHeld < dateadd(day, -L.CleanDays_, GetDate())


Winnipuh

а он вообще сработает?!Наверное, надо написать так:
DELETE FRO m
FROM members_ m
 INNER JOIN 
 (
 select * 
 from lists_ 
 where MemberType_ = 'held' 
 and lists_.CleanDays_ > <b>0</b>) AS x
 ON x.Name_ = m.List_
WHERE GetDate() - x.CleanDays_ > m.DateHeld_


Winnipuh

те, для которых выполнится условие where :)что именно непонятно-то?
да, ясно, в скобках значения из той же таблицы, спасибо ;-)