mysql A表根据B表的关联条件统计数量更新

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;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。