我已经用我想要的过滤器询问了user_invitations.inviter_id,它是:
select
inviter_id,
count(inviter_id) as invited_cnt
from user_invitations
group by
inviter_id
having
invited_cnt >= 52
order by
invited_cnt
从这里开始,我尝试只使用inviter_id在另一个名为user的表中获取id (即,希望获得与我刚才获得的inviter_id匹配的user_id )。
我试过做内心的活动
from users
inner join (
select inviter_id, count(inviter_id) as invited_cnt
from user_invitations
group by inviter_id
having invited_cnt >= 52
order by invited_cnt
)user_inv
on users.id = user_inv.id;
没有运气,我想过使用子查询
from users
where id in (
select inviter_id
from user_invitations
where inviter_id in (
select count(inviter_id) as invited_cnt
from user_invitations
group by inviter_id
having invited_cnt >= 52
)
group by inviter_id
);
但在大多数内部查询中,我无法找到通过invited_cnt >= 52进行过滤后返回>=的方法。我怎样才能做到这一点,既然使用invited_cnt >= 52我们需要的是农业计数,难道不可能吗?
我看过一些资源:Select id from one query and use it in another
但他们似乎都没有处理总体问题。
发布于 2019-09-18 07:37:46
如果我理解您的问题,这个查询应该提供与user_id
匹配的来自user
的inviter_id
SELECT
us.inviter_id,
count(us.inviter_id) AS invited_cnt,
u.user_id
FROM user_invitations AS us
JOIN user AS u ON u.user_id = us.inviter_id //just change the column name if needed
GROUP BY
us.inviter_id
HAVING
invited_cnt >= 52
ORDER BY
invited_cnt
如果您只期望一个user_id
,那么我认为这是可行的。不过,如果您将表结构加上一些示例数据和预期的输出,那就更好了。
https://stackoverflow.com/questions/57987232
复制相似问题