У меня есть MySQL таблица с полем JSON, где я храню данные в таком формате.
{
"fields": {
"1": {
"s": "y"
},
"2": {
"s": "n"
}
}
}
Мне нужно получить ключи в fields
, например, 1 или 2 учитывая значение s
.
Пример запроса:
create table mytable ( mycol json );
insert into mytable set mycol = '{"fields": {"1": {"s": "y"},"2": {"s": "n"}}}';
select j.* from mytable, JSON_TABLE(mycol,
'$.fields.*' COLUMNS (
json_key VARCHAR(10) PATH '$',
s VARCHAR(10) PATH '$.s'
)
) AS j where j.s = 'y';
дает:
# json_key, s
null, y
Я ожидал бы получить
# json_key, s
1, y
Возможно ли получить эти данные как-нибудь?
Мне не нужны результаты в формате row
/ table
. Я был бы рад получить список идентификаторов (json_keys), разделенных запятыми, которые соответствуют моему критерию.
РЕДАКТИРОВАТЬ: я также думал о получении путей с использованием JSON_SEARCH
и передачи его в JSON_EXTRACT
, это было достигнуто здесь: Объединение JSON_SEARCH и JSON_EXTRACT дает мне: «Неверное JSON выражение пути.» К сожалению, разница в том, что мне нужно было бы использовать JSON_SEARCH
в режиме all
, так как мне нужны все результаты. В таком режиме JSON_SEARCH
возвращает список путей, где JSON_EXTRACT
принимает список аргументов.