2

我一直在兜圈子,只是不知道如何使用可用的 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 语句中使用。

4

1 回答 1

1

这可以通过使用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
于 2021-03-07T04:47:02.807 回答