sql查找和刪除多字段重複項只保留最小rowid行

--sql查找多字段重複項
SELECT Device_ID, Device_Type,Sign_Class,Sign_Name,Sign_State,Sign_No FROM alarm WHERE (Device_ID, Device_Type,Sign_Class,Sign_Name,Sign_State,Sign_No) IN 
(
  SELECT Device_ID, Device_Type,Sign_Class,Sign_Name,Sign_State,Sign_No FROM alarm GROUP BY 
  Device_ID, Device_Type,Sign_Class,Sign_Name,Sign_State,Sign_No HAVING count(*) > 1
);

--sql刪除多字段重複項,只保留最小rowid行。
DELETE FROM alarm WHERE (Device_ID, Device_Type,Sign_Class,Sign_Name,Sign_State,Sign_No) IN (
 SELECT Device_ID, Device_Type,Sign_Class,Sign_Name,Sign_State,Sign_No FROM alarm GROUP BY 
 Device_ID, Device_Type,Sign_Class,Sign_Name,Sign_State,Sign_No HAVING count(*) > 1
) 
and rowid NOT IN (
    SELECT min(rowid) FROM alarm GROUP BY Device_ID,             
    Device_Type,Sign_Class,Sign_Name,Sign_State,Sign_No HAVING count(*) > 1
);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章