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
);
发布了331 篇原创文章 · 获赞 140 · 访问量 71万+

猜你喜欢

转载自blog.csdn.net/chenhao0568/article/details/100577241
今日推荐