【问题标题】:MySQL JSON_REPLACE - if key does not exist create keyMySQL JSON_REPLACE - 如果键不存在创建键
【发布时间】:2021-10-03 21:54:15
【问题描述】:

我正在使用JSON_REPLACE 更新键的值,但如果键不存在,我很难弄清楚如何在更新之前创建键。

这就是我的查询的样子。

$query_update = "UPDATE `forms` SET `conf` = JSON_REPLACE(`conf`, '$.title', '$title') WHERE id='32'";

知道如何在同一个查询中做到这一点吗?

更新 感谢下面 Juan Eizmendi 和 Salman A 的 cmets,将 JSON_REPLACE 更改为 JSON_SET 解决了这个问题。

更新后的查询如下所示

$query_update = "UPDATE `forms` SET `conf` = JSON_SET(`conf`, '$.title', '$title') WHERE id='32'";

【问题讨论】:

  • 您可以使用JSON_SET(插入或更新)。
  • 当然可以,但是如何检查该键是否存在于同一个查询中?
  • 所以你想更新密钥(如果存在),如果它不创建 key/value 对,这就是JSON_SET 所做的。如果您只想检查密钥determine if a json value
  • 是的,我想先检查这对是否存在,如果存在则更新,否则创建。但不知道如何结合JSON_REPLACEJSON_SET
  • @juan 你会做这个荣誉吗?

标签: mysql


【解决方案1】:

您可以使用JSON_SET 代替JSON_REPLACE,如果密钥不存在,它将插入密钥或更新现有密钥:

SELECT JSON_SET('{}', '$.title', 'new title');
-- {"title": "new title"}

SELECT JSON_SET('{"title":"old title"}', '$.title', 'new title');
-- {"title": "new title"}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    • 2023-03-16
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    相关资源
    最近更新 更多