mysql多个值()包含,需要根据条件更新

标签 mysql sql

如果一列值等于某个值,我需要更新重复键上的字段。现在我有这样的东西:

INSERT INTO `table` (metric,amount,something1,something2)
VALUES              (metric,amount,something1,something2),
                    (metric,amount,something1,something2),
                    (metric,amount,something1,something2)
ON DUPLICATE KEY UPDATE 
amount = IF (metric = '6', amount = amount + ( '"+amount+"'),'')
         ELSEIF (metric = '8' ,     amount = amount + ( '"+impressions+"') ,'')  
         ELSEIF (metrtic = '11' ,   amount = amount + ( '"+impressions+"') ,'');

我在这里做错了什么?

最佳答案

如果我理解正确,您可以使用 UPDATE 、 self JOINCASE WHEN

[DUPLICATE KEY]可以填写您要检查的DUPLICATE列。

UPDATE `table` r
JOIN (
    SELECT Count(*) cnt,[DUPLICATE KEY] 
    from `table`
    group by [DUPLICATE KEY]
) t1 on r.[DUPLICATE KEY] = t1.[DUPLICATE KEY] and t1.cnt > 1
SET r.amount = (CASE WHEN r.metric = '6' THEN r.amount+ ( '"+amount+"'),'' 
                  WHEN r.metric = '8' THEN r.amount + ( '"+impressions+"') ,''
                  WHEN r.metric = '11' THEN r.amount+ ( '"+impressions+"') ,''
                  ELSE r.amount
            END)

关于mysql多个值()包含,需要根据条件更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51475445/

相关文章:

mysql - 我无法在 Ubuntu 22.04 上安装 Mariadb

Java - 线程 "main"java.lang.Error : Unresolved compilation problems 中的异常

mysql - 使用 MySQL 显式锁定给定行

用于存储构建版本的 SQL 数据类型

sql - 对列表中的项目进行编号 - 最佳方法?

php - 如何循环php数组并插入到数据库

PHP ID 不通过 url

mysql - 在mysql中连接用户定义的变量

mysql - DATE_FORMAT 两次在 Where 子句中不起作用

用于按组和总计数获取计数的mysql查询