如何解决MariaDB 查询列转换为 JSON
我一直在兜圈子,只是不确定如何使用可用的 JSON 函数来解决这个问题。 我有一个包含项目名称和玩家标识符计数的数据库表,我想将这组记录表示为以项目名称为键的单个 json 对象。这就是表格数据的样子。
这是我想要生成的结构:
{
"WEAPON_PETROLCAN":1,"water":1,"bandage":2,"WEAPON_PISTOL":1
}
这是我的起点:
SELECT *
FROM addon_inventory_items
WHERE inventory_name ='property'
AND owner LIKE 'license:ee7d%';
我尝试将 JSON_INSERT 与先前定义的 @json 变量一起使用,但其格式不正确。有人知道怎么做吗?我的 dbms 版本是 10.5.8
背景是我想要更新和插入触发器在每种情况下响应创建玩家财产库存状态的快照,然后我可以将其存储在带有时间戳的历史审计表中。我想捕获这个 json 对象作为一个变量,然后在后续的 INSERT 语句中使用。
解决方法
这可以通过使用 JSON_OBJECTAGG
函数很容易地实现。请注意,您需要拥有至少 10.5.0 或更高版本的 MariaDB 才能使用它。
如果您使用的是 MySQL,5.7 和 8.0 都支持它。参考:https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html#function_json-objectagg
因此,您的查询将如下所示:
SELECT owner,JSON_OBJECTAGG(name,count)
FROM addon_inventory_items
WHERE inventory_name ='property'
AND owner LIKE 'license:ee7d%'
GROUP BY owner
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。