MariaDB 查询列变成 JSON

MariaDB query columns into JSON

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

这是我要生成的结构:

{
  "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

背景是我想要一个更新和插入触发器来响应每种情况,创建玩家 属性 库存状态的快照,然后我可以将其存储在历史审计 table 中一个时间戳。我想将此 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