2012-07-02 43 views
-1

我有一个MySQL查询选择了多项纪录MySQL的更新选择

SELECT 
leads.Affiliate_ID, 
leads.first_name, 
leads.last_name, 
leads.email, 
leads.loan_purpose, 
leads.home_tel, 
leads.mobile_tel, 
leads.postcode, 
leads.house_num, 
leads.app_time, 
leads.new_application_date, 
leads.payment_accepted, 
leads.sms 
FROM 
leads 
WHERE 
leads.Affiliate_ID = '23' AND 
leads.sms IS NULL AND 
leads.payment_accepted IS NULL AND 
leads.new_application_date < (NOW() - INTERVAL 5 DAY) 

我怎么现在在所有选定的记录更新leads.sms1

任何帮助或建议将是巨大

回答

0

更新数据,你并不需要选择使用select语句的记录。您需要使用WHERE子句将条件如下所示。使用WHERE子句,对满足该条件的行更新记录。

在你的问题
UPDATE 
leads SET sms = 1 
WHERE 
Affiliate_ID = '23' AND 
sms IS NULL AND 
payment_accepted IS NULL AND 
new_application_date < (NOW() - INTERVAL 5 DAY) 

此外,在您使用leads.FIELD_NAME所有地方。当有一个表格时,您不需要在字段名称前使用表格名称。当使用两个或更多表格使用JOINS时,需要表格名称。

0

只需在标准的地方替换之前的所有东西update syntax

update leads set sms=1 
WHERE 
leads.Affiliate_ID = '23' AND 
leads.sms IS NULL AND 
leads.payment_accepted IS NULL AND 
leads.new_application_date < (NOW() - INTERVAL 5 DAY) 
+0

感谢所以它应该看起来像SELECT leads.Affiliate_ID, leads.first_name, leads.last_name, leads.email, leads.loan_purpose, leads.home_tel, leads.mobile_tel, leads.postcode, leads.house_num, leads.app_time, leads.new_application_date, leads.payment_accepted, leads.sms FROM leads update leads set sms=1 WHERE leads.Affiliate_ID = '23' AND leads.payment_accepted IS NULL AND leads.sms IS NULL AND leads.new_application_date < (NOW() - INTERVAL 5 DAY)或者我应该做我的选择和prepossessing然后运行一个新的mysql命令来更新 – user1053865

+0

只是运行更新命令,它会更新所有选定的行,所以下一次执行选择它应该返回没有行导致sms列已更新(不再为空)。 –

+0

顺便说一下,这是一个很好的做法,就像在更新之前对选择查询所做的那样进行测试,因此您可以确定要更改哪些行。 –

2

如果我明白你的问题的话,试着:

UPDATE 
leads SET sms = 1 
WHERE 
Affiliate_ID = '23' AND 
sms IS NULL AND 
payment_accepted IS NULL AND 
new_application_date < (NOW() - INTERVAL 5 DAY) 
+0

所以我运行后,如果已经处理记录 – user1053865

+0

更新命令不依赖于选择命令,所以你可以随时运行它,尝试先运行你的选择,观察结果,然后运行更新并运行选择再次观察结果。 –