我找到了一张桌子,里面有一些人为赢得一辆卡车而进入。
tbl_contestants
参赛者最多可以输入100次。我想更新用户已经输入100次或更多次的所有记录的entry_type
。
我想要更新100个或更多记录的电子邮件地址为X的所有记录。我需要通过获取具有重复电子邮件地址的记录来确定X,然后保存这些记录并更新所有entry_type
我使用电子邮件地址作为我的选择器,因为所有条目都有电子邮件地址(需要输入)。
我会在查询中的某处选择一个计数吗?这个让我感到困惑。
我已经更新了Web表单上的逻辑,将任何新条目限制为100,我只需要处理在更新逻辑之前发生的条目。
修改的
我不知道所有已达到100门槛的参赛者的电子邮件地址。我们正在谈论拥有320K记录的数据库。我需要确定哪些电子邮件地址超过100次,然后在满足100阈值的所有记录上将entry_type设置为100。
答案 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
这是必须为每个电子邮件地址运行的缺点,但这很简单。