我有一个table
,如果用户达到3等惩罚,我应该计算在内,所以如果用户达到或超过3分,他就会被禁止:
table_warnings
- id
- user_id
- warning
- warning_date
id user_id warning warning_date
1 5478 1 2010-02-25 12:59:00
2 5478 1 2010-02-28 08:27:00
3 5478 2 2010-03-01 22:44:11
我started this question,用户知识管理帮助我完成了SELECT
这样的解决方案:
SELECT COUNT(warning)
FROM table_warnings AS w
INNER JOIN table_users AS u
ON w.user_id = u.user_id
WHERE w.user_id = 5478 AND warning_date >= '2010-02-05 12:59:00'
HAVING COUNT(warning) >= 3
我可以找到一种方法让SELECT
检索用户在过去30天内获得的阴谋点数吗?
答案 0 :(得分:5)
列“warn_penalty”是什么。我可以假设它与“警告”相同吗?如果是这样,只需将COUNT()更改为SUM()即可。通过一些额外的修复来消除第二个表:
SELECT user_id, SUM(warning)
FROM table_warnings
WHERE warning_date >= '2010-02-05 12:59:00'
GROUP BY user_id
HAVING SUM(warning) >= 3
将返回被禁止的所有用户。
或者,如果您有user_id并希望知道它是否被禁止:
SELECT SUM(warning)
FROM table_warnings
WHERE user_id = 5478 AND warning_date >= '2010-02-05 12:59:00'
并检查结果。