首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL:使用If else更新查询

问MySQL:使用If else更新查询
EN

Stack Overflow用户
提问于 2013-01-29 18:18:48
回答 2查看 5.1K关注 0票数 2

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

代码语言:javascript
复制
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')

在这里,col1或col3肯定包含'A'

请为我提供正确的查询

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-29 18:44:54

尝试此查询

代码语言:javascript
复制
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')
票数 5
EN

Stack Overflow用户

发布于 2020-08-04 12:38:20

和老帖子,但对于那些偶然发现这一点的谷歌人来说。这行不通的。例如:

代码语言:javascript
复制
THEN col1='IA'

将返回一个布尔值,并将col1设置为1,即true,只返回带有THEN 'IA' ELSE col1 END的'IA'

为了清楚起见:

代码语言:javascript
复制
UPDATE tablename
SET col1=(CASE WHEN col1 LIKE 'A' THEN 'IA' ELSE col1 END),
col2=(CASE WHEN col1 LIKE 'A' THEN 'XXX' ELSE col2 END),
col3=(CASE WHEN col3 LIKE 'A' THEN 'IA' ELSE col3 END),
col3=(CASE WEHN col3 LIKE 'A' THEN 'XXX' ELSE col4 END)
WHERE
(col1='A' AND col2='UNKNOWN') OR (col3='A' AND col4='UNKNOWN')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14580520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档