我正在尝试提出 T-SQL 查询来根据以下条件删除数据:
查找具有相同电子邮件的数据。
如果该用户的 AllLocations 均为“是”或“否”,则删除非今天的条目(假设今天是 2025 年 4 月 9 日)。
UserName Email AllLocations Location DateLoad John Doe [email protected] No Cerritos 4/9/2025 John Doe [email protected] No Cerritos 4/9/2025 John Doe [email protected] Yes 2/21/2025 Jane Sue [email protected] No Los Angeles 3/31/2025
因此,预期结果如下(删除后):
UserName Email AllLocations Location DateLoad
John Doe [email protected] No Cerritos 4/9/2025
John Doe [email protected] No Cerritos 4/9/2025
Jane Sue [email protected] No Los Angeles 3/31/2025
我尝试了类似 bottom 的方法,但显然它是错误的:
delete
from [table] a
inner join [table] b
on a.Email = b.Email
where
(
a.AllLocations = 'Yes'
and
b.AllLocations = 'No'
)
or
(
b.AllLocations = 'Yes'
and
a.AllLocations = 'No'
)
and
(
cast( a.DateLoad as date) = cast( GETDATE() as date)
or
cast( b.DateLoad as date) = cast( GETDATE() as date)
)