一个有趣的,我认为:) - 我的应用程序中的用户获得他们执行的操作的积分
我希望找到第一个达到100分的目标用户。
一种方法是返回所有已执行的操作及其日期和点数,并在PHP中运行它们以找到达到目标的第一个用户,但我想知道是否可以在SQL中执行此操作。
我知道如何将达到目标的所有用户返回到特定日期,但是有关如何找到第一个达到目标的人的想法?
提前谢谢,
道连
答案 0 :(得分:1)
创建一个计算累积分数的查询。然后,您只需要最低日期,累积分数至少为100。
答案 1 :(得分:1)
您可以创建一个缓存表(此表中的数据完全是冗余的,因此可以根据需要将其丢弃并重新创建)
在此表中存储用户(id),为此用户余额添加积分的每个“事件”的日期,以及平衡度本身......就像每个用户的银行余额......
可以从存储的事件/操作中重新创建表,因为它是由用户分组的总和历史记录...或者可以使用每个新事件/操作更新...
答案 2 :(得分:0)
在MySQL表中创建一个列,即FIRST。
满足某个条件的第一个查询,比如points = 500,会将表中的'FIRST'值设置为1.每个其他查询都将FIRST设置为0.
示例:
ID | USER | POINTS | FIRST
1 dor 480 0
2 tim 500 1
3 mit 200 0
然后搜索FIRST = 1
$q = mysql_query("SELECT * FROM table WHERE FIRST='1'");