如何使用MySQL查询在列中使用JSON数据数组从SQL数据库中删除记录?

gr8qqesn  于 5个月前  发布在  Mysql
关注(0)|答案(1)|浏览(81)

我有一个列'tours'包含JSON数据结构如下所示:

[
  {
    "widgets": [
      {
        "name": "Calendar",
        "uuid": "db7308b5-ee0a-46d2-80bb-63dcb57f1152",
        "value": "2023-12-23",
        "system_name": "Calendar"
      },
      {
        "name": "Number",
        "uuid": "7cbdf159-7368-4db8-83e0-775cdd223131",
        "value": 3
      },
      {
        "name": "Number",
        "uuid": "c8caa756-8563-4811-ac86-9dc0860832b4",
        "value": 0
      }
    ]
  }
]

字符串
我试图构造一个SQL查询,它允许我根据JSON结构中的特定条件检索记录。具体来说,我想获取“widgets”数组包含一个对象的记录,该对象的“name”属性设置为"Calendar",其关联的"value"福尔斯落在日期2023-12-01 and 2023-12-31之间。
有人能帮助我制作一个SQL查询来获取所需的记录吗?我希望有一个使用Laravel的Eloquent查询构建器的例子。

6ju8rftf

6ju8rftf1#

SELECT test.*
FROM test
CROSS JOIN JSON_TABLE(test.val,
                      '$[0].widgets[0]' COLUMNS ( name VARCHAR(100) PATH '$.name',
                                                  value VARCHAR(100) PATH '$.value'
                                                  )
                      ) jsontable
WHERE name = 'Calendar' AND CAST(value AS DATE) BETWEEN '2023-12-01' AND '2023-12-31';

字符串
fiddle

相关问题