现有如下需求
如图所示:对于同一code-color字段分组下得数据,如果date2等于date1,那么就删除这两条数据,如果有连续得三条这种数据就删除连续得三条。
具体实现思路,先采用自连接处理,这样会有满足条件得数据的id字段,这两条数据的id自连接后分别处于一条数据的两个不同字段中,在对这两个字段用union进行求并集(去重),最后通过ID进行删除。
sql如下:
DELETE from taopai WHERE id in (SELECT t1.id1 id FROM (SELECT t1.id id1,t2.id id2 from taopai t1,taopai t2 WHERE t1.`code-color`=t2.`code-color` and t2.date2=t1.date1) t1 UNION SELECT t2.id2 id from (SELECT t1.id id1,t2.id id2 from taopai t1,taopai t2 WHERE t1.`code-color`=t2.`code-color` and t2.date2=t1.date1) t2);