首页 > 解决方案 > 选择、求和、插入(如果存在)使用 MySql 进行更新

问题描述

我试图在删除 selecttimeid_usefromtab1和 insert into之前执行触发器,tab2但是当 intab1有几个相同时id_use,它将求和时间然后插入到tab2,此时我知道如何做到这一点,这就是我的查询

INSERT INTO tab2 (id_user, time) SELECT id_use, SEC_TO_TIME( SUM( TIME_TO_SEC( time ) ) ) AS suma FROM tab1 GROUP BY id_use HAVING COUNT(*) > 0

但现在是棘手的部分(对我来说),如果tab2已经存在相同id_user的值,我必须将已经存在的值tab1与新值相加,如果没有具有此 ID 的用户只需插入。我试过了,ON DUPLICATE KEY UPDATE但没有成功 对不起,我的英语很差,感谢您的帮助。

标签: mysqlmariadb

解决方案


我应该问为什么你不能为此使用像 php 这样的后端语言?

然后只需进行如下查询:Select id_use FROM tab1 WHERE id_use='xy';

然后使用mysql_num_rows() Then:

if(num_rows > 0){
      //update it
    }else{
      //insert it
    }

但如果你愿意,你可以试试这个:INSERT INTO tab2 (id_user, time) SELECT id_use, SEC_TO_TIME( SUM( TIME_TO_SEC( time ) ) ) AS suma FROM tab1 GROUP BY id_use HAVING COUNT(*) > 0 ON DUPLICATE KEY UPDATE time=(SELECT SEC_TO_TIME(SUM(TIME_TO_SEC( time) ) ) FROM tab1)


推荐阅读