我有一个表格,其中包含与用户相关的数据,以及两个重要的列:
refer_count
,在表格中设置新条目时会更新,referred_by
列设置为该用户user_id
,而referred_by
是user_id
1}}引用它们的用户。
我想从表格中选择在特定日期之后推荐人数最多的用户。
例如:
如果有3个用户,其中一个用户推荐另外2个用户(假设用户为2
和3
),则用户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,但是我需要获得实际用户。这是一个“顶级推荐人”表。我无法弄清楚为什么我在考虑这样做的方法时遇到这么多麻烦。
答案 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;
请注意,WHERE
在SELECT
之前,因此它不会首先获得最高计数,但会使用日期条件进行过滤,然后获得最高计数。
修改:根据已修改的问题更新了查询。