MySQL 提供了多种方法来在单个查询中更新具有不同值的多行。 虽然 IF
语句可以工作,但 CASE
语句提供了更简洁和可读的解决方案,特别是在处理多个条件时。
让我们考虑一个场景,我们需要更新 table_users
表,根据特定办公室内的用户角色分配不同的 cod_user
值。 下面演示了比使用多个 IF
语句更简洁的方法:
此查询利用 CASE
语句根据 cod_user
更新 user_rol
:
<code class="language-sql">UPDATE table_users SET cod_user = CASE WHEN user_rol = 'student' THEN '622057' WHEN user_rol = 'assistant' THEN '2913659' WHEN user_rol = 'admin' THEN '6160230' END, date = '12082014' WHERE user_rol IN ('student', 'assistant', 'admin') AND cod_office = '17389551';</code>
这是一个细分:
CASE
语句: 这可以优雅地处理多个条件。每个 WHEN
子句都会检查一个条件,如果为真,则分配相应的 cod_user
值。CASE
语句有效管理不同的用户角色。date
更新: 所有匹配行的 date
字段均更新为“12082014”。 请记住调整日期格式(本例中为“YYYYMMDD”)以匹配您的数据库设置。WHERE
子句: 此过滤更新仅影响 user_rol
为“学生”、“助理”或“管理员”且 cod_office
为“17389551”的行。与使用多个单独的 UPDATE
语句或复杂的嵌套 IF
结构相比,此方法提供了更高效且可维护的解决方案。 CASE
语句增强了可读性并简化了整体查询逻辑。
以上是如何在单个 MySQL 查询中更新具有不同值的多行?的详细内容。更多信息请关注PHP中文网其他相关文章!