如果存在则更新列数据,否则在 mysql 查询中保持不变

Posted

技术标签:

【中文标题】如果存在则更新列数据,否则在 mysql 查询中保持不变【英文标题】:update column data if present else keep unmodified in mysql query 【发布时间】:2013-06-17 07:16:29 【问题描述】:

如果存在,mysql 更新所有列数据,否则在 mysql 查询中保持不变

我有一个列名 'gender' ,它有 4 条记录,其中 2 男 1 女。 我当时在更新查询中使用案例交换了性别,一条记录是空白的,没有性别,但根据书面查询更新为男性。

我想要哪个性别是空白的,它不会更新它会保持原样,并且存在性别数据的地方它将交换性别。

提前致谢

【问题讨论】:

Andddd 查询所在? 更新用户设置性别 = 性别 = '男性' 然后 '女性' 否则 '男性' 结束 【参考方案1】:

试试这个

update user set gender = case when gender = 'Male' then 'Female' when gender='Female' then 'Male' else '' end

【讨论】:

它工作正常感谢信息,但如果我们采取另一种情况它不会像数据在性别字段中“测试”那样工作,它不是一个通用的解决方案,在这种情况下如何检查数据和不变... 没听懂,请详细说明一下。 让我们假设一个表用户有两个字段 id 和 city。表名:用户 ID City 1 pune,mumbai 2 hyderabad,pune 3 solapur 4 jammu,mumbai 在这里我想用破折号(-)更新分号(;),如果分号不存在则数据不变。在这方面帮助我.... 别写 else 部分 城市字段是动态的我应该如何知道城市字段是否包含分号,如果它存在然后用破折号替换,否则保持数据不变。能否请您详细说明一下,以便我能很好地理解【参考方案2】:

只需像这样处理另一个case when ...

update user set gender = case when gender = 'Male' then 'Female' when gender = 'Female' then 'Male' else '' end

【讨论】:

它给出了语法错误,因为你在 else 条件 '' 中没有提供数据。 您的 SQL 语法有误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '' 附近使用正确的语法

以上是关于如果存在则更新列数据,否则在 mysql 查询中保持不变的主要内容,如果未能解决你的问题,请参考以下文章

SQL 查询 - 如果存在则更新,否则插入

MYSQL从另一个表更新数据,如果存在,否则插入[重复]

如果存在则如何更新,否则在php mysql中插入[重复]

如果数据存在,则更新其他插入,使用子查询或等的mysql [重复]

mysql 表中数据不存在则插入,否则更新数据

如果已存在则更新行,否则使用 mysql 在表中插入新记录