【问题标题】:Unable to Update a data in a table in a required format无法以所需格式更新表中的数据
【发布时间】:2021-11-23 01:15:53
【问题描述】:

当前存在于 i 列中的数据

{
    "email": "abc@gmail.com",
    "shopNo": "195",
    "pincode": "454001",
    "address1": "195",
    "address2": "Bhoj kaniya school dhar",
    "landmark": "Bhojshala ",
    "streetName": "Bhoj kaniya school dhar",
    "dateOfBirth": "06-11-2002",
    "creationDate": "2021-09-23",
    "salesValuesOption": {
        "Lotte": "100000",
        "Parle": "100000",
        "Nestle": "80000",
        "Mondelez": "5000",
        "Perfetti": "5000"
    },
    "whatsappMobileNumber": "XXXXXXXXXX"
}

数据需要在数据库中更新为所需的格式

{
    "email": "abc@gmail.com",
    "shopNo": "195",
    "pincode": "454001",
    "address1": "195",
    "address2": "Bhoj kaniya school dhar",
    "landmark": "Bhojshala ",
    "streetName": "Bhoj kaniya school dhar",
    "dateOfBirth": "06-11-2002",
    "creationDate": "2021-09-23",
    "salesValuesOption": {
        "option1":"Lotte",
        "value1":"100000",
        "option2":"Parle",
        "value2":"100000",
        "option3":"Nestle",
        "value1":"80000",
        "Option4": "Mondelez",
        "value4": "5000",
        "option5": "Perfetti",
        "value5": "5000"
    },
    "whatsappMobileNumber": "XXXXXXXXXX"
}

上述表格中的数据存储在一个列中,并将存储在一个列中,我确实尝试了很多在线可用的东西,但也没有太多帮助

【问题讨论】:

  • 使用 json Quote 和 json UnQuote 获取值,但无法在数据前面添加选项和值

标签: mysql sql mysql-workbench


【解决方案1】:
WITH cte AS (
    SELECT id, JSON_MERGE_PRESERVE(
                   JSON_OBJECTAGG( CONCAT('option', jsontable.rowid),
                                   jsontable.jsonkey ),
                   JSON_OBJECTAGG( CONCAT('value', jsontable.rowid),
                                   JSON_EXTRACT(info->'$.salesValuesOption', 
                                                CONCAT('$.', jsontable.jsonkey)))) info
    FROM test
    CROSS JOIN JSON_TABLE(JSON_KEYS(info->'$.salesValuesOption'),
                          '$[*]' COLUMNS (rowid FOR ORDINALITY,
                                          jsonkey VARCHAR(255) PATH '$')) jsontable
    GROUP BY id )
UPDATE test t1
JOIN cte t2 USING (id)
SET t1.info = JSON_MERGE_PATCH(JSON_REMOVE(t1.info, '$.salesValuesOption'),
                               JSON_OBJECT('salesValuesOption', t2.info));

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=47f6dab8ac4d5119ec987901e33a359b

【讨论】:

  • 你能解释一下吗
猜你喜欢
  • 2016-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-04
  • 1970-01-01
相关资源
最近更新 更多