Задать вопрос
@topalek

Как правильно составить запрос для поиска по JSON полю в mySql?

есть таблица 'action'. в ней есть поле типа JSON 'condition'.
структура данных в этом поле
[{
    "data": [{"operator": "1"},{"type": "1"},{"1": {"values": "3"}}],
    "action": "6",
    "coupon": ["130"],
    "discount": "10",
    "change_cart": "1",
    "discount_type": "0",
    "change_price_after_use": "0",
    "show_in_additional_items": "1"
  },
  {
    "data": [{"operator": "1"},{"type": "2"},{"2": {"values": "77"}}],
    "action": "6",
    "coupon": ["130"],
    "discount": "200",
    "change_cart": "0",
    "discount_type": "1",
    "change_price_after_use": "1",
    "show_in_additional_items": "1"
  },
  {
    "data": [{"operator": "1"},{"type": "3"},{"3": {"values": "151262"}}],
    "action": "6",
    "coupon": ["130"],
    "discount": "10",
    "change_cart": "1",
    "discount_type": "0",
    "change_price_after_use": "0",
    "show_in_additional_items": "0"
  }
]


Вопрос, как составить правильный запрос для выборки всех записей у которых в поле 'condition' есть "action": "6"?
  • Вопрос задан
  • 1271 просмотр
Подписаться 1 Простой 17 комментариев
Пригласить эксперта
Ответы на вопрос 2
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
Как вариант использовать LIKE:
SELECT * FROM `action` WHERE `condition` LIKE '%"action": "6"%';


Test SQL query online
Ответ написан
@Akina
Сетевой и системный админ, SQL-программист.
запрос для выборки всех записей у которых в поле 'condition' есть "action": "6"

SELECT DISTINCT action.*
FROM action
CROSS JOIN JSON_TABLE(action.`condition`,
                      '$[*].action' COLUMNS (action INT PATH '$')) jsontable
WHERE jsontable.action = 6


https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=c3e97c...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы