【问题标题】:Update multiple fields on MySQL DB in a single query在单个查询中更新 MySQL DB 上的多个字段
【发布时间】:2015-12-03 12:17:14
【问题描述】:

这是我的名为employee的数据库的结构

mysql> desc employee;
+-------------+---------------+------+-----+---------+-------+
| Field       | Type          | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| emp_code    | int(11)       | NO   | PRI | NULL    |       |
| emp_name    | varchar(25)   | YES  |     | NULL    |       |
| designation | varchar(25)   | YES  |     | NULL    |       |
| department  | varchar(25)   | YES  |     | NULL    |       |
| basic       | decimal(10,2) | YES  |     | NULL    |       |
| DA          | decimal(10,2) | YES  |     | NULL    |       |
| gross_pay   | decimal(10,2) | YES  |     | NULL    |       |
+-------------+---------------+------+-----+---------+-------+

我的问题是,如何将 DA 更新为具有 designation manager 的行的值 1500 并更新 DA 所有其他员工的值为 2000。

【问题讨论】:

标签: mysql


【解决方案1】:

您可以为此使用case

update employees
    set DA = (case when designation = 'manager' then 1500 else 2000 end);

【讨论】:

    【解决方案2】:

    在更新时使用 CASE

    UPDATE  employee
    SET     DA =
            CASE
            WHEN designation = 'manager' THEN
                    '1500'
    
            WHEN designation = 'employees' THEN
                    '2000'
            END
    

    【讨论】:

      【解决方案3】:
      UPDATE employee
      SET DA = CASE 
      WHEN designation = "manager" THEN 1500
      ELSE 2000
      END
      

      【讨论】:

        【解决方案4】:
        UPDATE employee SET
        DA = IF(designation='manager', 1500),
        DA = IF(designation='', 1200)
        WHERE designation IN('manager', '');
        

        做了一些研究并构建了上述内容。试试看,看看会发生什么。

        【讨论】:

        • IF(designation='', 1200),就是空的时候。在任何其他情况下,OP 想要 1200。
        • 啊,我明白了...那用什么来代替 ' '?
        • 我会说designation<>'manager',虽然我不确定它是否像这样工作。 (与 2x DA =
        • 我们可以在我强调的地方添加一个“else”吗?
        • 这确实更有意义。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-03
        • 2020-06-27
        • 2017-02-01
        相关资源
        最近更新 更多