标题:求助:如何从两张不同的表中查询数据并加以比对
只看楼主
ssdos
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-9-14
结帖率:0
已结贴  问题点数:20 回复次数:3 
求助:如何从两张不同的表中查询数据并加以比对
是这样的,每个月电信话单给我之后我需要从我自己的数据库中吧呼叫记录拿出来和电信话单的计费记录比对(只是比对电话号码),来确认电信话单有没有问题,但是这个月我发现电信话单里面的记录数目比我数据库中的要多,我想知道多在哪里
现在有两张表:电信话单表和自己外呼表
我之前抽检的时候是吧两张表里面的某一天抽取出来,做成另外两张表(比如电信话单表0101和自己外呼表0101),然后用下面语句比对:

select 电话号码 from 电信话单表0101 where 电话号码 not in (select 电话号码 from 自己外呼表0101 )

但是现在需要吧一个月的每一天都进行对比,这样按照上面的语句我要把每一天的数据都单独弄出来,这个很效率低下,请教一条语句让我实现直接查询两张表一天的数据并进行比对:
先查询两个表中的同一天的记录
select 电话号码 from 电信话单表 where 呼叫开始时间>=20120101 and 呼叫开始时间<20120102
select 电话号码 from 自己外呼表 where 呼叫开始时间>=20120101 and 呼叫开始时间<20120102
然后让上面两条语句查询的结果进行比对
搜索更多相关主题的帖子: 如何 where 
2012-09-14 11:00
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
得分:7 
一样可以用not in啊

★★★★★为人民服务★★★★★
2012-09-14 23:21
小Program
Rank: 1
等 级:新手上路
帖 子:2
专家分:7
注 册:2012-9-14
得分:7 
先找出二表同号码与时间:那么这个表肯定是自己打出且有电信记录的。
select 自己.号码,自己.呼出时间 into #查询表 from 电信单,自己单  where 电信.号码=自己.号码 and 电信.时间=自己.时间
再找出号码相等且时间不等的记录。。
select 号码,时间 from 电信单,查询 where 电信.号码=查询.号码 and 电信.时间<>查询.时间
和查询表中没有的号
select 号码 from 电信话单表0101 where 电话号码 not in (select 电话号码 from 查询)
2012-09-14 23:56
netlin
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:24
帖 子:544
专家分:4308
注 册:2012-4-9
得分:7 
这种应用,对于SQL来说,是小菜!

楼主,你试一下:
查出所有 电信话单表 里多的记录:
select a.* from 电信话单表 a left join 自己外呼表 b on a.电话号码=b.电话号码 where b.电话号码 is null

做自己喜欢的事!
2012-09-15 09:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-381363-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.573243 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved