如何在MySQL中更新除单个值外的所有条目中的特定列?

如何在MySQL中更新除单个值外的所有条目中的特定列?

在数据库操作中,经常会遇到需要对所有条目中的某个列进行更新,但又不想把其中某个特定值更新掉。下面我们将介绍如何在MySQL中实现这一操作。

首先,我们来创建一个示例表格,包含id、name和age三列:

CREATE TABLE example (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    name VARCHAR(30) NOT NULL,
    age INT UNSIGNED NOT NULL,
    PRIMARY KEY (id)
);

接下来,我们往表格中插入一些数据:

INSERT INTO example (name, age) VALUES
    ('Alice', 20),
    ('Bob', 25),
    ('Charlie', 30),
    ('David', 35),
    ('Emma', 40);

现在,如果我们想把所有年龄 age 值加1,但想保持 Emma 的年龄不变,可以使用以下更新语句:

UPDATE example SET age = CASE
    WHEN name <> 'Emma' THEN age + 1
    ELSE age
    END;

上述代码使用了MySQL中的CASE语句,将满足条件的行的age值更新加1,同时保持Emma的年龄不变。注意,条件部分(即CASE后的WHEN子句)是“当name不等于‘Emma’时”,如果需要保留多个特定的值不被更新,可以在条件部分加入多个WHEN语句。

不过,如果我们需要更新的列比较多,那么CASE语句代码可能就会变得比较冗长。这时,可以使用MySQL中的UNION语句将多个UPDATE语句合并为一个语句:

UPDATE example SET age = age + 1
WHERE name <> 'Emma'
UNION
SELECT * FROM example WHERE name = 'Emma';

上述代码中,第一条语句为更新除了Emma以外的行的age值加1,第二条语句使用了UNION语句,将查询到的结果插入到结果集中,即保持Emmma的年龄不变。

阅读更多:MySQL 教程

结论

MySQL中更新所有条目中的特定列,可以使用CASE语句或UNION语句,分别根据具体情况选择使用。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程