Teradata内部加入有问题

时间:2018-03-19 05:01:36

标签: mysql teradata-sql-assistant

我必须在网络上的消费者身上找到特定号码。客户建议使用table "abcd"并确保符合manufacturer='big_company"。所以我在Teradata上运行以下查询。

select count(*)from(select tel_num, manufacturer from abcd
where manufacturer='big_company'
and tel_num is not null)pqr

此查询运行正常,记录总数为6亿。

客户的另一个问题是,在网络上的消费者中,有多少人选择了特定的服务。我被要求使用表“wxyz”并确保满足postpaid = 1条件。为了实现这一点,我必须在tel_num上创建abcd和wxyz之间的内部联接。以下是我使用的查询:

select cast (count (*)as bigint) from (select a.tel_num, b.postpaid from 
abcd as a inner join wxyz as b on a.tel_num=b.tel_num
where a.manufacturer='big_company'
and b.postpaid=1) xyz

以上查询生成了50亿条记录。

这看起来很奇怪,因为我已经使用了内连接,第二个查询中的记录数应该少于600万。我只是无法弄清楚我哪里出错了。

1 个答案:

答案 0 :(得分:1)

由于@ useless' MJ已将其置于评论中,您可能会从表tel_num获得每wxyz个多个结果。您可以在

中使用JOIN完全避免distinctEXISTS
select cast (count (*)as bigint) 
from abcd a
where exists (select 1 from wxyz b
  where a.tel_num=b.tel_num and b.postpaid=1)
and a.manufacturer='big_company'