【发布时间】:2021-05-24 08:07:13
【问题描述】:
提供了一个数据源:
https://raw.githubusercontent.com/usnistgov/oscal-content/master/examples/ssp/json/ssp-example.json
我已将此添加到名为ssp_models 的表中名为json_data 的JSON 列中,记录uuid 为66c2a1c8-5830-48bd-8fdd-55a1c3a52888。
我能够从具有该数据集的“各方”节点中很好地获取记录、插入记录和删除记录。
但是,JSON_REMOVE 部分并没有像我想要的那样工作。目前我可以通过 indexnum json_remove 一个条目:
UPDATE ssp_models
SET json_data = JSON_REMOVE(json_data, '$.\"system-security-plan\".metadata.parties[0]')
这样就可以像您期望的那样从“派对”中删除条目 [0]。
但我真正想要的是能够通过 uuid 删除记录。正如您在数据的“各方”部分中看到的,uuid 是每个条目中的一个元素:
parties: [
{
uuid: "3b2a5599-cc37-403f-ae36-5708fa804b27",
type: "organization",
name: "Enterprise Asset Owners"
},
{
uuid: "833ac398-5c9a-4e6b-acba-2a9c11399da0",
type: "organization",
name: "Enterprise Asset Administrators"
}....
那么,当它是 JSON 文档存储语法的一部分时,如何以某种方式将 'WHERE uuid = "3b2a5599-cc37-403f-ae36-5708fa804b27"' 组合到这样的 sql 查询中? (在这种情况下,我希望它会删除“企业资产所有者”条目以及它的类型和 uuid。就像我们需要添加搜索功能作为删除的一部分,但我一直在阅读的示例不要在 json_remove 中提供该选项:https://database.guide/json_remove-remove-data-from-a-json-document-in-mysql/
【问题讨论】:
标签: mysql sql json sql-update