MySQL:使用 If else 更新查询

标签 mysql sql

我想更新表,但不知道要更新哪一列。 这是一个简单的例子

Update tablename
set 
if col1='A' then col1='IA',col2='XXX'
if col3='A' then col3='IA', col4='XXX'
where
(col1='A' and col2='UNKNOWN') or (col3='A' and col4='UNKNOWN')

这里 col1col3 肯定包含 'A'

请向我提供正确的查询

最佳答案

尝试这个查询

UPDATE tablename
SET col1=(CASE WHEN col1 LIKE 'A' THEN col1='IA' ELSE col1 END),
col2=(CASE WHEN col1 LIKE 'A' THEN col2='XXX' ELSE col2 END),
col3=(CASE WHEN col3 LIKE 'A' THEN col3='IA' ELSE col3 END),
col3=(CASE WEHN col3 LIKE 'A' THEN col4='XXX' ELSE col4 END)
WHERE
(col1='A' AND col2='UNKNOWN') OR (col3='A' AND col4='UNKNOWN')

关于MySQL:使用 If else 更新查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14580520/

相关文章:

php - 如何在 POST 到数据库之前将用户消息转换为字符串?那么几乎如何使用 php pdo mysql 避免 SQL 注入(inject)等

mysql - 为 mysql 中的每个产品选择喜欢/不喜欢的方法

mysql - case 表达式来更改列的值

php - 使用php从ms access db获取最大和最小时间

mysql - 带有嵌套选择的sql插入语句

mysql - Laravel 中未提交表单?

mysql - 如何在条件聚合mysql中添加where?

sql - 灵活搜索客户SQL

sql - Oracle - 在聚合函数中使用分析函数

sql - 如何使用 TSQL 将文件上传到 SQL Server 2008 中的 varbinary(max) 列?