H_jsen
H_jsen
采纳率48.6%
2017-06-13 08:54 浏览 1.8k

mysql筛选出字段重复数据?

图片说明

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答 默认 最新

  • qq_38334913 朱明明啊 2017-06-13 09:58

    我先说下思路啊,,查询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

    点赞 评论 复制链接分享
  • u014336799 权小龙 2017-06-13 10:13

    #一步到位的方式

    语句

     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)))
    

    原始数据

    图片说明

    处理结果

    图片说明

    点赞 评论 复制链接分享
  • BloodyMandoo BloodyMandoo 2017-06-14 02:47

    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))

    点赞 评论 复制链接分享

相关推荐