0

3 つのフィールドで構成される主キーを持つテーブルがあります。

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 
           )

ありがとうございました。

4

1 に答える 1

1

と を連結して、テーブルの偽の一意のキーを作成することを試みることができIDproますIDPri

DELETE FROM mytable 
WHERE IsComp IS null AND 
      IDpro || ';' || IDPri IN (
         SELECT IDpro || ';' || IDPri 
         FROM mytable
         GROUP BY IDpro , IDPri 
         HAVING COUNT(*) > 1
      )
于 2013-07-25T13:51:13.913 に答える