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

时间:2015-01-10 21:24:24

标签: php mysql

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

refer_count,在表格中设置新条目时会更新,referred_by列设置为该用户user_id,而referred_byuser_id 1}}引用它们的用户。

我想从表格中选择在特定日期之后推荐人数最多的用户。

例如:

如果有3个用户,其中一个用户推荐另外2个用户(假设用户为23),则用户2在2/12/14被推荐,而用户3则是在2015年3月1日提到。

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

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

这是通过MySQL。

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

注册日期(register_date)用作参考日期。我需要使用截止后引用的用户数更新refer_count,但是我需要获得实际用户。这是一个“顶级推荐人”表。我无法弄清楚为什么我在考虑这样做的方法时遇到这么多麻烦。

2 个答案:

答案 0 :(得分:2)

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

这是个粗略的想法。 但是,如果要将表保留在同一个表中,则应该考虑规范化表。最好将诽谤放在一个单独的桌子上。

答案 1 :(得分:0)

获取refer_count中包含referal_date日期条件的最大值的行,使其位于certainDate之后:

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

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

修改:根据已修改的问题更新了查询。