【问题标题】:MySQL updating a field with comma if a value already exists如果值已经存在,MySQL 用逗号更新字段
【发布时间】:2021-09-22 12:57:42
【问题描述】:

如何通过检查查询本身来检查表中的字段是否为空,从而对表中的字段执行更新查询。如果它为空,则执行正常更新,否则通过添加带有新值的逗号来更新。

例如:

在表中说users我有一个名为genders的字段。

案例 1: 所选行的字段为空。更新值male

案例 2: 字段不为空且有值(例如,male)。更新为,female。现在字段值变为male,female

案例 3: 如果字段不为空且有值,则保持检查以不重复更新。例如,字段有male,female 并且更新查询再次运行,然后它将按照CASE 2 更新male,female,female。应该避免这种情况。

我想在查询本身中执行此操作。关于如何做到这一点的任何想法?

【问题讨论】:

标签: mysql sql case


【解决方案1】:

从以下得到一个想法并根据您的要求修改查询。

UPDATE users SET genders = CASE
    WHEN genders = '' OR genders is null THEN 'male'
    WHEN genders ='male' THEN CONCAT(genders,',','female') 
    WHEN genders ='female' THEN CONCAT(genders,',','male') 
    ELSE genders
    END

【讨论】:

  • 你发帖时我已经在这样做了。但是谢谢:)
  • 请更新您的查询以检查IS NULL 以及此WHEN (genders = '' OR genders IS NULL)。这将掩盖空或空检查的任何漏洞。
  • 兄弟,我有一个问题。这是更新male,female,female,female。再次运行查询时,将重复案例 2。我已经用案例 3 更新了问题。
  • 希望答案有帮助
  • 我给出了性别只是为了一个虚拟的例子。我在这里使用登录的用户 ID。在我的情况下,我必须使用FIND_IN_SET 来表示NOT NULL 条件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-04
  • 1970-01-01
相关资源
最近更新 更多