You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何处理数据库JOIN查询返回结果,将相同标识的对象分组为嵌套数组

实现方案

你可以在拿到数据库查询结果后,通过临时映射表按双字段标识分组,具体代码如下:

pool.query('SELECT * FROM columnslist INNER JOIN tableslist ON columnKey = keyTable', (error, result) => {
    if (error) {
        // 可自行添加错误处理逻辑
        return response.status(500).send(error);
    }
    // 临时分组映射表
    const groupMap = {};
    result.forEach(item => {
        // 用keyTable和columnKey拼接作为唯一分组标识
        const groupKey = `${item.keyTable}-${item.columnKey}`;
        // 分组不存在则初始化
        if (!groupMap[groupKey]) {
            groupMap[groupKey] = [];
        }
        groupMap[groupKey].push(item);
    });
    // 提取所有分组得到最终嵌套数组
    const nestedResult = Object.values(groupMap);
    response.send(nestedResult);
});

输出效果说明

用你提供的示例数据运行后,返回的nestedResult结构如下,完全符合需求:

[
  [
    {
      "id": 1,
      "columnOne": "qeqeqq qq wq qw wwqqwdqd",
      "columnTwo": "qdqdqdq wdqdqwqwd",
      "columnThree": "dqwdq qw qqsvds",
      "columnFour": "svsdvsxcvscsv svd ds",
      "columnFive": "sdvsdvsdvs ds sdd",
      "columnKey": 1,
      "keyTable": 1,
      "name": "Test"
    }
  ],
  [
    {
      "id": 3,
      "columnOne": "qdqwdwq",
      "columnTwo": "dqdqd",
      "columnThree": "qdqdwq",
      "columnFour": "wdqwdqwq",
      "columnFive": "wdqdqw",
      "columnKey": 2,
      "keyTable": 2,
      "name": "Qqeqeqeq"
    },
    {
      "id": 4,
      "columnOne": "qdqwdwq",
      "columnTwo": "dqdqd",
      "columnThree": "qdqdwq",
      "columnFour": "wdqwdqwq",
      "columnFive": "wdqdqw",
      "columnKey": 2,
      "keyTable": 2,
      "name": "Qqeqeqeq"
    }
  ]
]

如果后续需要调整分组标识,只需要修改groupKey的拼接规则即可。

内容的提问来源于stack exchange,提问作者aleksf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 19:24:03