微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MariaDB 查询列转换为 JSON

如何解决MariaDB 查询列转换为 JSON

我一直在兜圈子,只是不确定如何使用可用的 JSON 函数解决这个问题。 我有一个包含项目名称和玩家标识符计数的数据库表,我想将这组记录表示为以项目名称为键的单个 json 对象。这就是表格数据的样子。

enter image description here

这是我想要生成的结构:

{
  "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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?