我有一个表A
id
something
jsonModel
jsonModel 可能看起来像这样
{
"text":"foo",
"subkey1":{
"entity":{
"name":"foo",
"customId":"59d61ffcf5bcb11f250d73275a252b62624eac000180ab59"
}
}
}
当 jsonModel 中包含某个 ID 时,我尝试从表 A 中选择一行。
我已经尝试过这个,但它不起作用,说我不允许在表达式中使用通配符
SELECT
*
FROM A
WHERE json_contains(jsonModel,'59d61ffcf5bcb11f250d73275a252b62624eac000180ab59', $**.customId)
知道我不知道 customId 可以在模型中的哪个位置,有没有办法实现此目的?
编辑:
我最终写了这个,它有效,但我不知道这个解决方案或 wchiquito 之间哪个解决方案最好
SELECT *
from A WHERE
JSON_CONTAINS(JSON_EXTRACT(jsonModel, '$**.customId'), '"59d61ffcf5bcb11f250d73275a252b62624eac000180ab59"');
最佳答案
尝试:
SELECT
`id`,
`jsonModel`
FROM
`A`
WHERE
JSON_SEARCH(
`jsonModel`,
'one',
'59d61ffcf5bcb11f250d73275a252b62624eac000180ab59',
NULL,
'$**.customId'
) IS NOT NULL;
参见db-fiddle .
关于MySQL JSON 子查询查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47652300/