SQL 当相关行存在时更新记录

  • Post category:MySQL

在 SQL 中,我们可以使用 UPDATE 语句来更新表中的记录。有时候,我们需要在相关行存在时才更新记录。以下是 SQL 当相关行存在时更新记录的完整攻略,含两条实例:

  1. 使用 EXISTS 子查询更新

我们可以使用 EXISTS 子查询来检查相关行是否存在,并在存在时更新记录。例如,以下 SQL 语句将更新 my_table 表中 age 列的为 40,但仅在 name 为 ‘John’ 的记录存在时才更新:

UPDATE my_table SET age = 40 WHERE name = 'John' AND EXISTS (SELECT * FROM my_table WHERE name = 'John');

在上述语句中,我们使用 EXISTS 子查询来检查 name 为 ‘John’ 的记录是否存在。如果存在,则更新 age 列的值为 40。

  1. 使用 INNER JOIN 更新记录

我们可以使用 INNER JOIN 来连接两个表,并在相关行存在时更新记录。例如,以下 SQL 句将更新 my_table 表中 age 列的值为 40,但仅在 my_table 和 my_table2 表中都存在 name 为 ‘John’ 的记录时才更新:

UPDATE my_table INNER JOIN my_table2 ON my_table.id = my_table2.id SET my_table.age = 40 WHERE my_table.name = 'John' AND my_table2.name = 'John';

在上述语句中,我们使用 INNER JOIN 来连接 my_table 和 my_table2 表检查 name 为 ‘John’ 的记录是否存在。如果存在,则更新 my_table 表中 age 列的值为 40。

总之,在 SQL 中,我们可以使用 EXISTS 子查询和 INNER JOIN 来检查相关行是否存在,并在存在时更新记录。需要注意的是,操作必须满足 WHERE 子句中的条件,以确保只有相关行被更新。