【问题标题】:Deleting with SQL使用 SQL 删除
【发布时间】:2021-10-21 15:34:42
【问题描述】:

VB 2012

表 1

Kubun |Name | Code | Date   | Time
1     |AA   | 10001|20210101|8:30
1     |AA   | 10001|20210101|9:00
1     |BB   | 10002|20210101|8:30
1     |BB   | 10002|20210101|9:00
2     |AA   | 10001|20210101|14:00
2     |AA   | 10001|20210101|17:30
2     |BB   | 10002|20210101|14:00
2     |BB   | 10002|20210101|17:30

我想删除所有数据,除了 Kubun 1 的最短时间和 Kubun 2 的最长时间。 如果您能帮助解决这个问题,我将不胜感激。

【问题讨论】:

  • Time 列的类型是什么?
  • 'Time' = integer , not Null

标签: sql vb.net visual-studio-2012 sql-delete


【解决方案1】:

根据您的问题信息,如果您正在寻找 SQL-Query 解决方案中的内容,请尝试使用以下内容:

Delete From Table1 Where [Time] != (Select Min([Time]) From Table1) and [Time] != (Select Max([Time]) From Table1)

更新查询以根据最大时间和最小时间根据名称删除记录

Delete t1 From Table1 t1 
Join 
   (Select [Name], max([Time]) maxTime, min([Time]) minTime From Table1 Group by [Name]) t2
    on 
      (t1.[Name] = t2.[Name] and t1.[Time] = t2.maxTime) OR 
      (t1.[Name] = t2.[Name] and t1.[Time] = t2.minTime)

【讨论】:

  • 通过这种方式,我做到了,可以删除除 min(time) 和 max 之外的所有数据。但我想为姓名列中的每个人保留最大和最小 [时间]。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-25
  • 1970-01-01
相关资源
最近更新 更多