更新100条或更多条记录的电子邮件地址为X的记录

时间:2014-04-10 00:00:10

标签: mysql

我找到了一张桌子,里面有一些人为赢得一辆卡车而进入。

tbl_contestants

参赛者最多可以输入100次。我想更新用户已经输入100次或更多次的所有记录的entry_type

我想要更新100个或更多记录的电子邮件地址为X的所有记录。我需要通过获取具有重复电子邮件地址的记录来确定X,然后保存这些记录并更新所有entry_type

我使用电子邮件地址作为我的选择器,因为所有条目都有电子邮件地址(需要输入)。

我会在查询中的某处选择一个计数吗?这个让我感到困惑。

我已经更新了Web表单上的逻辑,将任何新条目限制为100,我只需要处理在更新逻辑之前发生的条目。

修改

我不知道所有已达到100门槛的参赛者的电子邮件地址。我们正在谈论拥有320K记录的数据库。我需要确定哪些电子邮件地址超过100次,然后在满足100阈值的所有记录上将entry_type设置为100。

2 个答案:

答案 0 :(得分:2)

尝试这样

UPDATE tbl_contestants SET entry_type = 'GOOD' from  tbl_contestants WHERE email IN 
(select email from tbl_contestants group by email HAVING COUNT(*) >=100)

或者

UPDATE tbl_contestants SET entry_type = 'GOOD'from  tbl_contestants WHERE email IN 
(select email from tbl_contestants where email='X' group by email 
HAVING COUNT(*) >=100) 

答案 1 :(得分:0)

您可以为该电子邮件的所有现有条目将entry_type设置为BAD:

UPDATE tbl_contestants SET entry_type = 'BAD' WHERE email = 'X'

然后返回并将电子邮件的entry_type设置为GOOD,限制为100:

UPDATE tbl_contestants SET entry_type = 'GOOD' WHERE email = 'X' LIMIT 100

这是必须为每个电子邮件地址运行的缺点,但这很简单。