给位看官,请留步【关于查找满足多个条件绝对相等,描述不清楚,详见内容】。

johnny_ 2012-11-19 03:40:17
表有很多字段,我提取几个需要用到的字段
CCY(币种), ACOD(客户账号), GUIDEDATE(日期)

给定两个日期,我要提取这两个日期中客户币种和账号相等的账号。
但是现在有着几种情况出现:
1,两个日期中各有一条数据,币种和账号都相等(通过),如果不同,则不通过。
通过
CNY 40008550215121 2012-08-06
CNY 40008550215121 2012-08-07
不通过
CNY 40008550215121 2012-08-06
USD 40008550215121 2012-08-07

2,有个日期中有一条数据,有个日期中有两条,其中一条的币种和账号和另外一个日期的相等,还另外一条的币种另外一个日期的币种不相等(不通过)
USD 40008550215121 2012-08-06
CNY 40008550215121 2012-08-06
USD 40008550215121 2012-08-07


3,两个日期中都有多条数据,两边账号和币种都有一一对应相等的数据(通过)
USD 40008550215121 2012-08-06
CNY 40008550215121 2012-08-06
USD 40008550215121 2012-08-07
CNY 40008550215121 2012-08-07

我写了个简单的子查询,但是出来的效果不准确,不知道各位有什么好的方法,还望不吝赐教。
...全文
207 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
javamy010 2013-09-07
  • 打赏
  • 举报
回复
好帖子啊,学习啦!!
mysdzlt2007 2012-11-20
  • 打赏
  • 举报
回复
慢点有可能,但是根据你给的数据,第二种情况测试通过
johnny_ 2012-11-20
  • 打赏
  • 举报
回复
引用 3 楼 mysdzlt2007 的回复:
如果只是查询账号,试试这个 SQL code?1234567SELECT * FROM `ccy_acount` a WHERE a.GUIDEDATE='2012-08-06' GROUP BY a.ACOD HAVING SUM(IF((SELECT COUNT(*) FROM `ccy_acount` b WHERE b.ACOD=a.ACOD AND b.CCY……
你这样写还是没解决问题,和我自己写的结果是一样的,而且你这样写的时间还长一些。 还是没有解决我上面说到的第二种情况。
mysdzlt2007 2012-11-19
  • 打赏
  • 举报
回复
如果只是查询账号,试试这个
SELECT * 
FROM `ccy_acount` a 
WHERE a.GUIDEDATE='2012-08-06' 
GROUP BY a.ACOD 
HAVING SUM(IF((SELECT COUNT(*) 
FROM `ccy_acount` b 
WHERE b.ACOD=a.ACOD AND b.CCY=a.CCY AND b.GUIDEDATE='2012-08-07')>0,1,0))=COUNT(*)
rucypli 2012-11-19
  • 打赏
  • 举报
回复
按照币种和账号排序不行吗
WWWWA 2012-11-19
  • 打赏
  • 举报
回复
贴建表及插入记录的SQL,及要求结果出来看看

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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