B表记录A表id,B表对A表为多对一关系,A表更新其中三个字段,第一个字段取随机20-100的数字,第二个字段为B表条件数量的随机0.4到0.6倍,第三个字段为B表条件数量的随机0.4到0.6倍加上第二个字段
A表字段名称 |
类型 |
描述 |
id |
bigint(20) |
主键 |
origin_total |
int(5) |
原始量 |
total |
int(5) |
总量 |
current_total |
int(5) |
当前量 |
B表字段名称 |
类型 |
描述 |
id |
bigint(20) |
主键 |
A_id |
bigint(20) |
A表主键 |
status |
int(2) |
状态 周一0,周二1,周三2,周四3,周五4 |
UPDATE A r,
(
SELECT
id,
A_id,
`status`,
COUNT( id ) AS A_count
FROM
B
WHERE
`status` IN ( 2, 3 )
GROUP BY
A_id
) rsu
-- 随机生成20-100的数据
SET r.origin_total = (CEILING( RAND( ) * 80)+20 ),
-- 总需求为数量的0.4到0.6倍,对于小数部门进行四舍五入
r.current_total = ROUND(rsu.A_count * ((RAND( ) *20)+ 40) / 100)
WHERE
r.id = rsu.A_id;
UPDATE A r,
(
SELECT
id,
A_id,
`status`,
COUNT( id ) AS A_count
FROM
B
WHERE
`status` IN ( 2, 3 )
GROUP BY
A_id
) rsu
SET
r.total_total = rsu.A_count + r.current_total
WHERE
r.id = rsu.A_id;