如何查询表中不同数量的帐号?

时间:2017-09-21 18:00:32

标签: mysql

我有一个查询,可以让我在一段时间内为客户使用。我想在"和"中创建一个子查询。要求帐号的声明。

where 1=1
and acct.client_co_account_id in
(   
  select client_co_account_id
  from account 
  where 1=1
  and rownum <= 50000
) 

我想要50,000个不同客户帐户的使用统计信息。但是,我实际上只获得了50,000行而不是50,000个ACCOUNTS。对于一个帐户,此查询将为每天提供96次使用,为期一周。所以它有很多信息。每个帐户应有672个条目,其中50,000个。

它让我疯了!顺便说一下,上面只是查询的快照。还有更多,我正在研究子查询。

谢谢!

2 个答案:

答案 0 :(得分:2)

你可以使用distinct和mysql没有rownum但是限制

where  acct.client_co_account_id in
(   
  select distinct client_co_account_id
  from account 
  order by client_co_account_id limit  50000
) 

你不需要1 = 1

但是为了更好地使用连接

from mytable inner join  (   
  select distinct client_co_account_id
  from account 
  order by client_co_account_id limit  50000
) t on t.client_co_account_id  = mytable.acct.client_co_account_id 

内连接更有效,并且允许避免与IN子句中子选择结果的最大维度相关的限制

答案 1 :(得分:0)

如果您希望每个client_co_account_id出现一次,distinct关键字就是您的朋友。如果您想要50,000个结果,则需要限制结果数量而不是检查行号

select distinct client_co_account_id
from account 
where 1=1
limit 50000