mysql - 使用多个表中的数据更新表并按月分组 -

标签 mysql

我是初学者,需要一些帮助。尝试使用多个表中的数据更新一个表,并将它们按月或周分组

update monthly_report
SET De_Ative = (SELECT IFNULL(sum(statuschange.NUM_STATUS_CHANGES),0) FROM statuschange
WHERE month(STR_TO_DATE(statuschange.Evaluation_day,'%d.%m.%Y')) = monthly_report.Mon
AND statuschange.STATUS_CHANGE ='CANCEL' OR statuschange.STATUS_CHANGE ='LOCK'
group by month(STR_TO_DATE(statuschange.Evaluation_day,'%d.%m.%Y')))

[SQL] update monthly_report
SET De_Ative = (SELECT IFNULL(sum(statuschange.NUM_STATUS_CHANGES),0) FROM statuschange
WHERE month(STR_TO_DATE(statuschange.Evaluation_day,'%d.%m.%Y')) = monthly_report.Mon
AND statuschange.STATUS_CHANGE ='CANCEL' OR statuschange.STATUS_CHANGE ='LOCK'
group by month(STR_TO_DATE(statuschange.Evaluation_day,'%d.%m.%Y')))

-- group by monthly_report.Mon

[Err] 1242 - Subquery returns more than 1 row

最佳答案

试试这个,

UPDATE  monthly_report a
        LEFT JOIN
        (
            SELECT  MONTH(STR_TO_DATE(a.Evaluation_day,'%d.%m.%Y')) mnt,
                    SUM(a.NUM_STATUS_CHANGES) totalSum
            FROM    statuschange a
            WHERE   a.STATUS_CHANGE IN ('CANCEL', 'LOCK')
            GROUP   BY MONTH(STR_TO_DATE(a.Evaluation_day,'%d.%m.%Y'))
        ) b ON b.mnt = a.mon
SET     a.De_Ative = IFNULL(b.totalSum, 0)

关于mysql - 使用多个表中的数据更新表并按月分组 -,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18956585/

相关文章:

sql - 使用单个连接查询而不是多个查询来提高性能?

PHP:如何将数据从 HTML 表单插入到具有多对多关系的表中?

php - 从另一个设置为仅接受来自本地主机的连接的 php 文件加载 PHP 文件中的解密 key 是否更安全?

php - 如何通过 php/ajax/javascript 动态检测蜂窝运营商?

php - 删除MYSQL表字段中的空格

mysql - 如何使用现有查询获取这些附加数据

php - 如何建立一个多语言网站

php - 在某个字符出现 n 次后选择的正则表达式

mysql - varchar '09/16/2016 17:28:25 IST' 到 mysql 中的日期时间

php - 通过 ajax 发送复选框值以进行 php/mysql 查询