[请教]关于两张表,对于同一个字段数据去重的实现

爱写Bug的麦洛 2017-11-23 09:16:07

目前业务涉及两张表
1.订单日志表,其中字段XZPHONE
2.活动办理日志表 ,其中字段PHONE_NO

...全文
598 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiegenZ 2017-11-24
  • 打赏
  • 举报
回复
试试这个SQL: SELECT TT.PHONENO1 FROM( SELECT T.XZPHONE AS PHONENO1, T1.PHONE_NO AS PHONENO2 FROM T_YWXH_LOG T LEFT JOIN T_YWSK_ACT_LOG T1 on T1.PHONE_NO = T.XZPHONE WHERE T1.STATE = '1' AND T.STATE = '0' AND T.DSSTATE = '0' )TT WHERE TT.PHONENO2 IS NULL
碧水幽幽泉 2017-11-23
  • 打赏
  • 举报
回复

select t1.xzphone
  from t1
  where not exists(select null from t2 where t2.phone_no = t1.xzphone) 
碧水幽幽泉 2017-11-23
  • 打赏
  • 举报
回复
试试这个: [code=sq] select t1.xzphone from t1 where not exists(select null from t2 where t2.phone_no = t1.xzphone) [/code]
爱写Bug的麦洛 2017-11-23
  • 打赏
  • 举报
回复
引用 7 楼 qq646748739 的回复:
[quote=引用 6 楼 Milogenius 的回复:] [quote=引用 5楼碧水幽幽泉 的回复:][quote=引用 2 楼 Milogenius 的回复:] 因为我活动办理失败的手机号码有另一个定时在跑,这个手机号码随便办理活动失败,但是他下单已经成功,订单表中状态正常,第一个定时任务会跑.我需要排除活动日志表中的手机号码
你说了一大段文字,不如给个SQL效果出来。[/quote]大神能帮我写写看嘛?非常感谢[/quote] 需求很容易实现,关键是要把你想要的效果贴出来。[/quote] 需求就是: 比如订单表手机号码 号码 状态 1 0 2 0 3 0 活动日志表 号码 状态 1 1 2 1 现在号码重复,查第一张表排除到第二张有的号码1和2,只查出来3
碧水幽幽泉 2017-11-23
  • 打赏
  • 举报
回复
引用 6 楼 Milogenius 的回复:
[quote=引用 5楼碧水幽幽泉 的回复:][quote=引用 2 楼 Milogenius 的回复:] 因为我活动办理失败的手机号码有另一个定时在跑,这个手机号码随便办理活动失败,但是他下单已经成功,订单表中状态正常,第一个定时任务会跑.我需要排除活动日志表中的手机号码
你说了一大段文字,不如给个SQL效果出来。[/quote]大神能帮我写写看嘛?非常感谢[/quote] 需求很容易实现,关键是要把你想要的效果贴出来。
爱写Bug的麦洛 2017-11-23
  • 打赏
  • 举报
回复
引用 5楼碧水幽幽泉 的回复:
[quote=引用 2 楼 Milogenius 的回复:] 因为我活动办理失败的手机号码有另一个定时在跑,这个手机号码随便办理活动失败,但是他下单已经成功,订单表中状态正常,第一个定时任务会跑.我需要排除活动日志表中的手机号码
你说了一大段文字,不如给个SQL效果出来。[/quote]大神能帮我写写看嘛?非常感谢
碧水幽幽泉 2017-11-23
  • 打赏
  • 举报
回复
引用 2 楼 Milogenius 的回复:
因为我活动办理失败的手机号码有另一个定时在跑,这个手机号码随便办理活动失败,但是他下单已经成功,订单表中状态正常,第一个定时任务会跑.我需要排除活动日志表中的手机号码
你说了一大段文字,不如给个SQL效果出来。
碧水幽幽泉 2017-11-23
  • 打赏
  • 举报
回复
引用 3 楼 Milogenius 的回复:
SELECT T.XZPHONE AS PHONENO FROM T_YWXH_LOG  T WHERE T.XZPHONE NOT IN (SELECT T1.PHONE_NO FROM T_YWSK_ACT_LOG T1 WHERE T1.STATE = '1' )AND T.STATE = '0'AND T.DSSTATE = '0'
这是我自己的sql,虽然解决了,但我感觉不是最优的方式,请教一下大家
SQL写得有问题。
爱写Bug的麦洛 2017-11-23
  • 打赏
  • 举报
回复
SELECT T.XZPHONE AS PHONENO FROM T_YWXH_LOG  T WHERE T.XZPHONE NOT IN (SELECT T1.PHONE_NO FROM T_YWSK_ACT_LOG T1 WHERE T1.STATE = '1' )AND T.STATE = '0'AND T.DSSTATE = '0'
这是我自己的sql,虽然解决了,但我感觉不是最优的方式,请教一下大家
爱写Bug的麦洛 2017-11-23
  • 打赏
  • 举报
回复
因为我活动办理失败的手机号码有另一个定时在跑,这个手机号码随便办理活动失败,但是他下单已经成功,订单表中状态正常,第一个定时任务会跑.我需要排除活动日志表中的手机号码
爱写Bug的麦洛 2017-11-23
  • 打赏
  • 举报
回复
1.第一个定时任务 第一次我会去查订单日志表,获取状态正常手机号码,调用接口激活号码,并且办理活动,并且将激活结果(成功与否)和活动办理结果添加到活动办理日志表: 2.第二个定时任务 我会去查询活动日志表中激活失败的手机号码,重新去办理活动 这样就会存在一个问题 我在第一个获取状态成功的手机号和第二次获取办理活动手机号会有重复,所以我在第一次查询手机号时,要排除掉我办理活动失败的手机号;

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧