2013-07-25 40 views
0

我有一個表由三個字段的主鍵:選擇其中一對夫婦值在子查詢

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

您可以嘗試通過連接IDproIDPri爲您創造表假唯一鍵:

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

沒錯它的工作原理,因爲領域是數字和有沒有機會,有「;」進入選定的領域,謝謝! –