Помогите с выборкой из mysql по ключу JSON
Коллеги, прошу помощи. Есть таблица mySQL, в которой есть N записей формата id(bigint), name (varchar) и options (JSON). Структура данных для options у всех элементов примерно такая:
[
{
"value": "1000",
"option": "echo"
} ,
{
"value": "123",
"option": "id"
} ,
{
"value": "2",
"option": "test"
}
]
Нужен запрос, который выведет id всех элементов таблицы, где value для ключа test >= 2
Ответы (1 шт):
Автор решения: Дмитрий Шамонов
→ Ссылка
Разобрался сам. JSON_EXTRACT не работает с повторяющимися ключами без "родительского ключа".
привел структуру JSON к такому виду:
{ "prm1": { "value": "10", "option": "test" }, "prm2": { "value": "390х140х390", "option": "Размер" } }
$sql = "SELECT * FROM table WHERE JSON_EXTRACT(options, '$.prm1.value') >= 2 AND JSON_EXTRACT(options, '$.prm1.option') = 'test' ";
Запрос работает отлично.