持续循环 mySQL

Persistent round robin loop mySQL

我有一个 table 大约 10 名销售代表,每次将新的潜在客户添加到数据库时,每个人都应该收到一封包含潜在客户的新电子邮件。

---------------------------------------------
id  |  name  |  email               |  active
---------------------------------------------
1   |  bill  |  bill@billspills.com |    y
2   |  bob   |  bob@bobsjobs.com    |    n
3   |  sue   |  sue@suesshoes.com   |    y
4   |  betty |  jan@jansvans.com    |    y

我希望系统以循环方式向代表发送电子邮件。一旦到达 table 的末尾,它将再次从头开始。我只想给 'active' 标志设置为 'y' 的人发送电子邮件。代表可以通过将标志设置为 'n' 来选择退出。所以,以上将发送电子邮件:

bill, sue, jan, bill, sue, jan 等等

我需要它是持久的,因为潜在客户可能会在几分钟或几小时内出现,所以我需要一种方法来记住最后一封电子邮件代表,以确定谁应该收到下一封电子邮件。

我考虑使用第五列,'emailedLast',然后查询最后收到电子邮件的人,并选择下一个 ID。我不确定如何重新回到起点,也许是通过计算记录来确定 table 中的最后一条。

我在问,只是想看看是否有我错过的更简单、更清晰的方法。我为此使用 PHP。

更新:

解决方法:(使用Laravel/Eloquent)

public function touch(){
        $rep = Rep::where('active','=','y')->orderby('updated_at', 'asc')->first();
        $rep->touch();
        echo $rep->name;
}

等效于使用SQL:

select * from `reps` where `active` = 'y' order by `updated_at` asc limit 1 
update `reps` set `updated_at` = '2015-01-28 03:52:32' where `id` = '2' 

添加一个 emailedLast 列(时间戳),当您通过电子邮件将潜在客户发送给销售代表时,将其设置为当前时间戳 (now())

那么您查找下一个电子邮件代表的查询将是:

select * from reps where active = 'y' order by date asc limit 1;