选择子选择中的几个值的位置

时间:2013-07-25 13:34:22

标签: sqlite group-by

我有一张主键由三个字段组成的表:

IdPro, IdPri, IsComp

实际上,我遇到了一些不正常的情况,例如:

   IDPro IDPri  IsComp
    1      1     null
    1      1      0

我想删除IsComp = null所在的行,但只有在对应的双行时才会删除。

我需要知道是否有类似的东西:

Delete from mytable where IsComp is null 
       AND Tuple(IDpro, IDPri) in 
           (SELECT Tuple(IDPro, IDPri) 
            FROM mytable group by IDPro, IDPri 
            HAVING Count(*) > 1 
           )

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以尝试通过连接IDproIDPri来为您的表创建假的唯一键:

DELETE FROM mytable 
WHERE IsComp IS null AND 
      IDpro || ';' || IDPri IN (
         SELECT IDpro || ';' || IDPri 
         FROM mytable
         GROUP BY IDpro , IDPri 
         HAVING COUNT(*) > 1
      )