Хорошо, я только что узнал, что вы можете сохранить и выбрать тип данных JSON в MySQL.
Я пытался ответить user2458995 на тот же вопрос, что и мой, (Разница моя с ключом, а значение - массив). Я скопировал его точный код, создал таблицу, вставил данные из его вставки SQL и попробовал его выбор, который дал мне ошибку.
Я изменил таблицу здесь, чтобы показать пример того, как данные будут храниться в моем примере.
В основном у меня есть эта настройка
CREATE TABLE my_table (id INT, data JSON);
INSERT INTO my_table VALUES (1, '{"hashtags": ["html", "php", "javascript"], "categories": [2,5,6]}'), (2, '{"hashtags": ["css", "jquery", "html"], "categories": [2,5,6]}')
Если я хочу выбрать все хэштегиЯ могу сделать это следующим образом
SELECT data->>"$.hashtags" FROM my_table
Но как мне выбрать данные, например, где?
Я представлял себе что-то вроде этого
SELECT * FROM `my_table` WHERE 'html' IN (data->>"$.hashtags")
Это действительно выполняется,но он не возвращает строк. Я также попробовал несколько других предложенных способов, но я не могу заставить что-либо работать
SELECT * FROM `my_table` WHERE JSON_CONTAINS('html', '$.hashtags')
Я думал, что это будет действительно аккуратный подход, но будет ли разумнее просто хранить каждую категорию / хэштег в уникальномгрести с идентификатором FK?
Надеюсь, кто-нибудь может мне помочь:)