在插入新表之前查询delete需要条件的位置

时间:2016-04-11 15:00:28

标签: sql sql-server

我正在尝试获得以下查询的解决方案,如果你能给我提示那将是很棒的。

我有下表

MainId      SubId      Code
A01         r01        pre1
A01         r02        pre1
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   Code
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,则保持原样。

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

2 个答案:

答案 0 :(得分:2)

我认为这应该有效:

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

答案 1 :(得分:0)

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

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