MySQL UPDATE 可以用 CASE

MySQL UPDATE 可以用 CASE

MySQL UPDATE 可以用 CASE

在数据库管理系统中,更新操作是常见的操作之一,用于修改表中的记录。MySQL 中,UPDATE 是用来更新表中现有记录的关键字。

在进行更新操作时,有时候我们需要根据不同的条件更新表中的记录。这时就可以使用 CASE 关键字来实现根据条件执行不同的更新操作。

什么是 CASE 语句?

CASE 语句是 SQL 中的一种条件语句,用于根据不同的条件执行不同的操作。CASE 语句可以在 SELECT、UPDATE 和 DELETE 语句中使用。

CASE 语句有两种形式:CASECASE WHEN

  • CASE 形式:
CASE expr
    WHEN search_condition THEN result
    [WHEN search_condition THEN result ...]
    [ELSE result]
END
  • CASE WHEN 形式:
CASE
    WHEN search_condition THEN result
    [WHEN search_condition THEN result ...]
    [ELSE result]
END

MySQL UPDATE 中使用 CASE

MySQL 中,可以在 UPDATE 语句中使用 CASE 来根据不同的条件更新表中的记录。下面是使用 CASE 的 UPDATE 语法:

UPDATE table_name
SET column_name = 
    CASE 
        WHEN condition1 THEN value1
        WHEN condition2 THEN value2
        ...
        ELSE default_value
    END,
    another_column = 
    CASE 
        WHEN condition3 THEN value3
        WHEN condition4 THEN value4
        ...
        ELSE default_value
    END
WHERE condition;

其中,column_nameanother_column 是需要更新的列名,condition1, condition2, condition3, condition4 是条件, value1, value2, value3, value4 是对应条件的更新值,default_value 是默认更新值,WHERE 子句是更新的条件。

下面我们通过一个实际的示例来说明如何在 MySQL 中使用 CASE 的 UPDATE 语句。

假设有一个员工表 employees,包含 id, name, salary 三个字段,我们需要根据员工的薪水等级来调整他们的工资。假设薪水等级分为三级:123,我们要将薪水等级为 1 的员工增加 500,薪水等级为 2 的员工增加 300,薪水等级为 3 的员工增加 100

下面是对应的 UPDATE 语句:

UPDATE employees
SET salary = 
    CASE 
        WHEN salary_level = 1 THEN salary + 500
        WHEN salary_level = 2 THEN salary + 300
        WHEN salary_level = 3 THEN salary + 100
        ELSE salary
    END
WHERE department = 'Engineering';

在这个 UPDATE 语句中,我们根据 salary_level 的不同值来对员工的薪水进行不同的调整,并且限定条件为 department 为 ‘Engineering’。

示例

让我们通过一个具体的示例来演示上面给出的 UPDATE 语句的使用。

首先,创建一个名为 employees 的表,并插入一些数据:

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    salary INT,
    salary_level INT,
    department VARCHAR(50)
);

INSERT INTO employees (id, name, salary, salary_level, department)
VALUES (1, 'Alice', 2000, 1, 'Engineering'),
       (2, 'Bob', 3000, 2, 'Engineering'),
       (3, 'Charlie', 4000, 3, 'HR'),
       (4, 'David', 2500, 1, 'Engineering'),
       (5, 'Eve', 3500, 2, 'HR');

现在,我们来执行上面给出的 UPDATE 语句:

UPDATE employees
SET salary = 
    CASE 
        WHEN salary_level = 1 THEN salary + 500
        WHEN salary_level = 2 THEN salary + 300
        WHEN salary_level = 3 THEN salary + 100
        ELSE salary
    END
WHERE department = 'Engineering';

执行以上 UPDATE 语句后,再来查询 employees 表的数据:

SELECT * FROM employees;

查询结果如下:

+----+--------+--------+--------------+-------------+
| id | name   | salary | salary_level | department  |
+----+--------+--------+--------------+-------------+
|  1 | Alice  | 2500   | 1            | Engineering |
|  2 | Bob    | 3300   | 2            | Engineering |
|  3 | Charlie| 4000   | 3            | HR          |
|  4 | David  | 3000   | 1            | Engineering |
|  5 | Eve    | 3500   | 2            | HR          |
+----+--------+--------+--------------+-------------+

我们可以看到,根据员工的薪水等级,使用 CASE 的 UPDATE 语句成功地对员工的薪水进行了调整。

总结

本文介绍了在 MySQL 中使用 CASE 的 UPDATE 语句来根据不同的条件更新表中的记录。通过 CASE 语句,我们可以根据多个条件执行不同的更新操作,实现灵活且高效的数据更新。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程