【问题标题】:query where delete requires condition before inserting into new table在插入新表之前查询删除需要条件的位置
【发布时间】:2016-04-11 15:00:28
【问题描述】:

我正在尝试获取以下查询的解决方案,如果您能给我提示,那就太好了。

我有下表

MainId SubId 代码 A01 r01 前1 A01 r02 前1 A01 s01 post1 A01 s02 post1 A01 s03 post1 A02 s04 post1 A02 s05 post1 A02 s06 post1 A03 r05 pre1 A03 r06 pre1

预期结果:

MainId SubId 代码 A01 s01 post1 A01 s02 post1 A01 s03 post1 A02 s04 post1 A02 s05 post1 A02 s06 post1 A03 r05 pre1 A03 r06 pre1

我想删除所有主 ID 为 pre1 但条件是主 ID 必须同时满足 pre1 和 POST1 值的记录。

因此,例如,如果您在上面看到 A01 同时具有 pre1 和 post1,则表示该案例已完成,我们不需要更多带有 pre1 的记录,所以我想删除它们。

如果 MAINID 只有 pre1 或 post1,则保持原样。

在此之后或同时我也想将结果集转移到新表中。

【问题讨论】:

  • 代码中可以只有“pre1”和“post1”吗?
  • 看起来它删除了所有内容,我仍然需要保留您要删除 pre1 值的相同 mainid 的 post1 值。
  • 对,一开始我没有很好地理解你的要求。希望您将您在 SO 中阅读的所有内容附在 BEGIN TRAN / ROLLBACK 中!

标签: sql sql-server


【解决方案1】:

我认为这应该可行:

DELETE yourTable
WHERE Code = 'pre1'
AND   MainId IN (SELECT MainId FROM yourTable WHERE Code = 'post1')

【讨论】:

【解决方案2】:

试试这个,它应该做你想做的:

DELETE FROM #TEMP   
WHERE CODE = 'PRE1'   
AND MAIN_ID IN (    
SELECT MAIN_ID FROM #TEMP
WHERE CODE = 'POST1')   

【讨论】:

  • 是的,这也是一个解决方案
  • 谢谢,希望对您有所帮助。请投票/接受答案。
  • 它说我需要获得 15 点声望或其他东西。
猜你喜欢
  • 1970-01-01
  • 2019-07-30
  • 1970-01-01
  • 1970-01-01
  • 2014-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-23
相关资源
最近更新 更多