我有这样的表格,日期格式为YYYY-MM-DD
id | state_id | created_on | closed_on |
1 | 1 | 2020-02-19 | NULL |
2 | 2 | 2020-01-02 | 2020-01-03 |
3 | 1 | 2020-01-05 | NULL |
4 | 4 | 2020-02-07 | 2020-02-08 |
4 | 3 | 2020-02-20 | NULL |
我需要使用2到6 WHERE之间的随机状态更新STATE
我可以这样做(它可以正常工作):
UPDATE table SET state_id = FLOOR(2 + rand() * 6)
WHERE created_on < CURRENT_DATE()
AND (state_id=1 OR state_id=3)
我需要在同一更新中另外做的是设置closed_on:
CURRENT_DATE()
如果新的随机状态我考虑过使用SET @newState = FLOOR(2 + rand() * 6)
,但是所有记录都具有相同的state_id
是否可以使用不同的值进行更新?
类似的东西
UPDATE table SET state_id = FLOOR(2 + rand() * 6), closed_on = IF(new_state_id = 3, NULL, CURRENT_DATE())
WHERE created_on < CURRENT_DATE()
AND (state_id=1 OR state_id=3)
我有这样一个表格,日期格式为YYYY-MM-DD id | state_id | created_on | close_on | 1 | 1 | 2020-02-19 | NULL | 2 | 2 | 2020-01-02 | 2020-01-03 | 3 | 1 | ...