我有一个products
表,其中包含一个JSON
列product_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...'附近使用的正确语法
如果你能帮我找出问题所在,我将不胜感激
1条答案
按热度按时间vhipe2zx1#
你似乎是从另一个数据库复制的,mysql中没有varchar8max),语法有点复杂,而且你需要很好地理解json。
像workbench这样的gui,至少可以帮助你识别错误,但它不会帮助你
第一章