【问题标题】:How can I delete from a table using the join and where clause? [duplicate]如何使用 join 和 where 子句从表中删除? [复制]
【发布时间】:2019-03-08 19:11:27
【问题描述】:

以下是我目前的代码,选择查询是我想从事件表中删除的内容。

declare @maxsnapevent table (sita varchar(10), snap date)
insert into @maxsnapevent
select sita, max(snapshot_date) from ukrmc.dbo.strategy group by sita  
--select * from @maxsnapevent 


--need to delete everything that the following code gives  
select events.sita, events.date, events.event from ukrmc.dbo.events events
join @maxsnapevent max on max.sita = events.sita  
where date >= max.snap and events.sita != 'lcypd' and events.sita != 'lonza' 

来自策略表的示例数据:

date          sita    Event              Snapshot_date
2018-01-01   London   Bank Holiday       2017-12-31 
2018-01-02   London                      2017-12-31 
2018-01-03   London                      2017-12-31
2018-01-04   London   Concert            2017-12-31
2018-01-02   London                      2018-01-01
2018-01-03   London                      2018-01-01
2018-01-04   London   Concert            2018-01-01
2018-01-01   Bham   Bank Holiday         2017-12-31 
2018-01-02   Bham                        2017-12-31 
2018-01-03   Bham                        2017-12-31
2018-01-04   Bham                        2017-12-31
2018-01-02   Bham                        2018-01-01
2018-01-03   Bham     Charity            2018-01-01
2018-01-04   Bham                        2018-01-01

事件表中的示例数据:

date         sita    Event
2018-01-01   London  Bank Holiday
2018-01-02   London  
2018-01-03   London  
2018-01-04   London  Concert
2018-01-01   Bham    Bank Holiday
2018-01-02   Bham  
2018-01-03   Bham  
2018-01-04   Bham    Concert

如您所见,每个快照都有多个站点和多个日期。

【问题讨论】:

标签: sql sql-server join


【解决方案1】:

您是否尝试过下一个代码?

delete events
from ukrmc.dbo.events events
join @maxsnapevent max on max.sita = events.sita  
where date >= max.snap and events.sita != 'lcypd' and events.sita != 'lonza'

【讨论】:

  • 第一行应该删除 sita, date, event 吗??
  • @Sorath 不,您不删除列,而是删除行。
  • @Sorath 不,第一行指示您要执行删除的表。您删除 ROWS,而不是列。我建议您阅读有关 SQL Server 中 DML 操作的更多信息。微软为此提供了令人难以置信的文档。
  • 非常感谢你们的帮助!
猜你喜欢
  • 2018-09-07
  • 1970-01-01
  • 1970-01-01
  • 2015-10-31
  • 1970-01-01
  • 1970-01-01
  • 2010-11-26
  • 2018-04-21
相关资源
最近更新 更多