mysql筛选出字段重复数据?

图片说明

如上图中的mysql表中的数据。如何筛选出datetime字段在4月份内跟datetime字段不包含4月份内,name字段和region字段相同的数据,即4月份中某个数据name为"AA",region为"东莞",跟不是在4月份内的某个数据name为"AA",region为"东莞,视为相同,求问SQL语句改如何写?

我先说下思路啊,,查询4月内的为一张表a,4月外的为一张表b,然后外联结 条件是a.name=b.name and a.region=b.region 查出来的数据给表c 然后where b.name 不为空,c.name不为空

select c.* from(
(select * from table where datetime between to_date('2017-04-01' , 'yyyy-mm-dd ') and to_date('2017-04-30' , 'yyyy-mm-dd hh24:mi:ss')) a
left join
(select name name1,region region1 from table where datetime to_date('2017-04-30' , 'yyyy-mm-dd hh24:mi:ss')) b
on a.name=b,name and a.region=b.region) c
where name1 in not null and region1 not null

#一步到位的方式

语句

 SELECT * FROM abc a JOIN abc b ON a.`name`=b.`name` AND a.region = b.region AND a.ID <> b.ID AND ((locate('-04-',a.datetime)>0 AND locate('-04-',b.datetime)<=0) or ((locate('-04-',a.datetime)<=0 AND locate('-04-',b.datetime)>0)))

原始数据

图片说明

处理结果

图片说明

select name,region,datetime from A where exists (select 1 from B where A.name = B.name AND A.region=B.region AND locate('-04-',datetime)>0))