如何在MariaDB中将一个对象转换为JSON_TABLE?

i34xakig  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(107)

我有一个products表,其中包含一个JSONproduct_logs。在该表中,它包含类似于以下内容的内容:

{
  "c8eebc99-d936-3245-bc8d-17694f4ecb58": {
    "created_at": "2022-05-08T15:33:33.591166Z",
    "event": "product-created",
    "user": null
  },
  "ce7b171b-b479-332f-bf9e-54b948581179": {
    "created_at": "2022-05-08T15:33:33.591174Z",
    "event": "near-sell-by",
    "user": null
  }
}

我只想返回在product_logs中有near-sell-by事件的产品行,因此我尝试这样做:

SELECT 
    products.*
FROM products,
     JSON_TABLE(product_logs, '$[*]', COLUMNS (
         created_at DATETIME PATH '$.created_at',
         event VARCHAR(MAX) PATH '$.event'
     ) logs
WHERE
    logs.event = 'near-sell-by'

但是,我似乎收到了以下错误:

1064 -您的SQL语法有错误;请查看与您的MariaDB服务器版本对应的手册,以了解在第4行的'(product_logs,'$[*]',COLUMNS(created_at DATETIME PATH '$. cr...'附近使用的正确语法

如果你能帮我找出问题所在,我将不胜感激

vhipe2zx

vhipe2zx1#

你似乎是从另一个数据库复制的,mysql中没有varchar8max),语法有点复杂,而且你需要很好地理解json。
像workbench这样的gui,至少可以帮助你识别错误,但它不会帮助你
第一章

  • db〈〉小提琴

相关问题