Как заказать по значению JSON? - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть этот столбец с именем " data " и в нем есть JSON.

Что я хочу сделать, это заказать мой запрос SQL по " toptimes"значение.

Мой фактический и желаемый запрос:

"SELECT core_members.pp_thumb_photo,name,member_group_id,data FROM game_accounts.accounts INNER JOIN website_accounts.core_members ON member_id = account_id WHERE member_group_id IN (4, 7, 8, 6) ORDER BY data ->> '$[0].toptimes' ASC LIMIT 100"

Мой JSON код:

[ { "daily_login": { "yearday": 56, "hour": 11, "second": 33, "minute": 18, "weekday": 3, "month": 1, "monthday": 26, "timestamp": 1582715913, "year": 120, "isdst": 0 }, "toptimes": 49, "daily_login_streak": 1, "hunters": 59, "playtime": 226099647, "awards": [ ], "nickname": "RandomNick" } ]

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Должно быть что-то в этих строках:

ORDER BY JSON_VALUE(data,'$.daily_login.toptimes)

Доступ toptimes - daily_login в объекте JSON.

0 голосов
/ 27 февраля 2020

Предположительно, вы хотите:

order by data ->> '$[0].toptimes'

Это упорядочит набор результатов в соответствии со значением toptimes в элементе first вашего массива JSON.

Если вы храните JSON объект , а не массив (хотя это не то, что вы показали в ваших данных примера), тогда:

order by data ->> '$.toptimes'
...