我有一个查询,可以让我在一段时间内为客户使用。我想在"和"中创建一个子查询。要求帐号的声明。
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个。
它让我疯了!顺便说一下,上面只是查询的快照。还有更多,我正在研究子查询。
谢谢!
答案 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