从具有计数和基于计数的条件的数据库中选择


Select from database with count and count based conditions?

>我有一个表格,其中包含与用户相关的数据,以及两个重要的列:

refer_count ,当表中有一个新条目并将referred_by列设置为该用户user_id时,将更新referred_by,这是引用他们的用户的user_id

我想从表中选择在特定日期后引用次数最多的用户。

例如:

如果有 3 个用户,其中一个引用了另外 2 个(假设用户 23),但是用户 2 在 2/12/14 被引用,而用户 3 在 3/1/15 被引用。

如果截止值为 1/12/14,则返回用户 1,refer_count设置为

2,但如果截止值在 2/12/14 之后,则返回用户 1,refer_count设置为 1。

我一直在想如何做到这一点,但我想不出一种可行的方法。有办法吗?

这是通过MySQL。

编辑:我想我可能需要提供信息。

注册日期(register_date)用作参考日期。我需要使用截止后引用的用户数量更新refer_count,但是我需要获取实际用户。这是针对"顶级引荐来源网址"表的。我不知道为什么我在想办法做到这一点时遇到了这么多麻烦。

SELECT user_id FROM usertable WHERE (referal_date BETWEEN '2014-12-2' AND CURDATE())ORDER BY refer_count DESC;

这是粗略的想法。但是,如果您将所有表都保留在同一表中,则应考虑规范化表。最好将引用保存在单独的表中。

获取refer_count中最大值的行,并为您的referal_date提供日期条件,使其在certainDate之后:

SELECT user_id FROM table WHERE refer_count = (SELECT MAX(refer_count) FROM table) AND referal_date>certainDate;

请注意,WHERESELECT 之前,因此它不会首先获得最高计数,但会使用日期条件进行筛选,然后获得最高计数。

编辑

:根据编辑的问题更新了查询。