mysql - 将两个查询转换为一个更新查询
问题描述
我想知道是否可以将这两个查询结合起来。
我的桌子看起来像这样:
------------------------------------
| id | server | domain | status |
------------------------------------
| 1 | serv1 | serv1.az | 0 |
| 2 | serv2 | serv2.lo | 0 |
| 3 | serv2 | servNEW | 1 |
| 4 | serv3 | serv.as | 0 |
------------------------------------
我做了这两个查询来更新列:
UPDATE `table` SET `server` = ? WHERE `server` = ?
UPDATE `table` SET `domain` = ? WHERE `domain` = ?
例如:
UPDATE `table` SET `server` = `serv1_NEW` WHERE `server` = `serv1`
UPDATE `table` SET `domain` = `serv1NEW` WHERE `domain` = `serv1.az`
编辑:
更正了语法错误
UPDATE `table` SET `server` = `serv1_NEW` WHERE `server` = 'serv1'
UPDATE `table` SET `domain` = `serv1NEW` WHERE `domain` = 'serv1.az'
解决方案
在简单的情况下,您可以使用CASE 语句。例如:
UPDATE `table` SET
`server`= CASE
WHEN `server` = 'serv1' THEN `serv1_NEW`
ELSE `server`
END,
`domain`= CASE
WHEN `domain` = 'serv1.az' THEN `serv1NEW`
ELSE `domain`
END
WHERE `server` = 'serv1' OR `domain` = 'serv1.az'
但是两个单独的查询对于您的任务来说是更清晰的解决方案
推荐阅读
- .net - 将服务引用添加到我的项目后,自动生成的 reference.cs 文件未生成所有必需的类 -Vs 2013
- javascript - 如何在我的 React 函数中访问局部变量?
- azure - 未捕获的类型错误:无法解析模块说明符“@microsoft/applicationinsights-web”。相对引用必须以“/”、“./”开头
- java - 使用 mysqldump 从 Java 备份 mysql 数据库失败
- jestjs - 如何使用 Jest 测试 window.location 的路径名
- documentation - OpenAPI HTML 文档:如何记录 XML 细节?
- laravel - 将csv导入mysql相关表
- swift - Firebase 要求我更改我的数据库 URL 由于区域
- python - 使用 Pandas 连续打印文件
- nginx - 从 nginx 的响应头中检测内容类型