0

我每天都会更新一张用户表 - 我希望每 160 个用户都有。

我知道我需要进行计数以查看是否有超过 160 或 320 个用户,这样我就可以将那个用户排除在外,但是这个公式将如何工作?

我是否将用户数除以 160?

但是我怎么知道它是需要第 160 位用户还是第 320 位用户呢?

此检查将在每个用户注册后进行,因此一旦将用户添加到数据库中,我需要查看它们是否是 160 的倍数,然后基本上向他们发送电子邮件(数据库用户可以超过 165000)。

4

6 回答 6

3

检查除以 160 是否等于 0

编辑:您可以通过使用像这样的另一个计数器来检查它是第 160 位还是第 320 位:

int counter1 = 0;
int counter2 = 0;
     if(counter1 % 160 == 0)
{
    counter2++;
     //DO SOMETHING 
}

现在,counter2每 160 人就会养 1 人。

于 2012-08-22T09:05:10.327 回答
3

如果您的 users 表有整数 id,您可以获取 id 低于或等于当前用户 id 的用户数,然后检查 count % 160 == 0。

于 2012-08-22T09:05:51.833 回答
2

如果您的数据库有一个自动递增的字段(大多数数据库倾向于对其主键执行此操作),您可以执行一个查询来检查userID % 160 == 0. 这应该从第 0 个用户开始,每 160 个用户返回一次。

然后,在您的应用程序中,您可以userId / 160查看第 0 个用户、第 160 个用户、第 320 个用户等。

于 2012-08-22T09:07:11.963 回答
0

有一个简单的方法可以知道用户是否是第 160 位。

if (userCount % 160 == 0)
        {
            //User is 160th user, or 320, 480 etc...
        }

这将验证用户是否可被 160 整除且没有小数。有关模的更多信息:http: //www.dotnetperls.com/modulo

于 2012-08-22T09:08:01.947 回答
0

类似的东西

for (int i = 1; i < (int)(users.Count/160); i++)
{
    newUsers.Add(users[160 * i]);
}

...这是假设您使用列表,但您没有说过。你的“db”应该有类似的方法来完成同样的事情。

这将返回第 160、第 320 等用户。

于 2012-08-22T09:12:59.013 回答
0

假设您要扫描大量数据(db users 可以超过 165000),首先查询所有用户,然后在客户端过滤它们可能不是一个好主意。

更好地在您的数据库中处理此问题,如下所示:

SELECT R, userid FROM
(SELECT ROWNUM R, userid FROM (SELECT userid FROM users ORDER BY userid ))
WHERE MOD(R, 160) = 0

(这个例子是针对 Oracle 的,可能有更有效的方法来查询这个)


旁注:
由于您没有提供更多信息(您使用的数据库、表格布局等),因此很难找到更好的答案。另请注意,例如 Sql Server 具有发送电子邮件的能力,因此您可能可以在不涉及客户端的情况下使用此功能。

于 2012-08-22T09:24:55.997 回答