mysql - 使用 Case 语句更新表

标签 mysql sql case

UPDATE crm_accounts 
SET 
    reg = "Sim" 
WHERE age >= 17 
AND age <= 35 
AND balance > 0.00
AND type = "Júnior";


UPDATE crm_accounts 
SET 
    reg = "Não" 
WHERE age >= 17 
AND age <= 35 
AND balance = 0.00
AND type = "Júnior";


UPDATE crm_accounts 
SET 
    type = "Efetivo"
WHERE age >= 17
AND age <= 35 
AND type = "Júnior";

该语句用于此目的,但我想简化并合并到一个案例语句中。有什么帮助吗?谢谢。

最佳答案

看起来你想要这样的东西:

 UPDATE crm_accounts a
    SET a.reg 
      = CASE
          WHEN a.balance > 0.00 THEN 'Sim'
          WHEN a.balance = 0.00 THEN 'Não'
          ELSE a.reg
        END
      , a.type = 'Efetivo'
  WHERE a.age >= 17
    AND a.age <= 35
    AND a.type = 'Júnior'

每当我写这样的更新语句时,我总是先测试 SELECT 语句中的表达式和谓词,然后验证结果。在将其转换为 UPDATE 语句之前,我确保一切都按我需要的方式工作。

 SELECT a.age >= 17
      , a.type
      , a.reg AS old_reg
      , CASE
          WHEN a.balance > 0.00 THEN 'Sim'
          WHEN a.balance = 0.00 THEN 'Não'
          ELSE a.reg
        END AS new_reg
   FROM crm_accounts a
  WHERE a.age >= 17
    AND a.age <= 35
    AND a.type = 'Júnior'

关于mysql - 使用 Case 语句更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39796083/

相关文章:

php - 插入查询锁定整个数据库并且不响应

sql - 如何为 DateDiff 动态传入 date_or_time_part?

sql-server - WHERE 子句中出现无效列名错误,使用 CASE 选择列

MySql Case语句获取日期时间在现在之后的第一行

sql - 如何在别名字段上执行功能?

php - 当我登录时如何将我的 id 值传递给其他 php 文件

php - PDO::PARAM_INT 是多余的吗?

mysql - 使用其他 2 个表的计算更新表

sql - 查询中的列名

sql - 需要有关 sql 更新查询的帮助