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

如何编写SQL查询连接两表并按时间筛选以填充GroupInfo结构体?

解决方法

首先假设你的组元数据表名为groups,组成员表名为group_members,可以用下面的SQL查询获取所需数据:

SELECT 
    g.GroupID,
    g.DisplayName AS groupName,
    GROUP_CONCAT(p.PersonID SEPARATOR ',') AS groupMemberIDs
FROM groups g
LEFT JOIN group_members p ON g.GroupID = p.GroupID
WHERE g.CreateTime >= 'start_time' AND g.CreateTime < 'end_time'
GROUP BY g.GroupID, g.DisplayName;

关键细节说明:

  • 数据库聚合函数差异:不同数据库的字符串聚合语法有区别,按需替换:
    • MySQL/MariaDB: 使用GROUP_CONCAT
    • PostgreSQL: 替换为string_agg(p.PersonID, ',')
    • SQL Server: 替换为STRING_AGG(p.PersonID, ',')
  • LEFT JOIN的作用:保证即使某个组没有成员,也能被查询出来(此时groupMemberIDs为NULL,代码里可处理为空数组)
  • 时间参数:把'start_time'和'end_time'替换成实际时间值,注意格式要和CreateTime字段的存储格式匹配。

映射到结构体的代码处理:

拿到查询结果后,只需简单转换:

  1. 将GroupID直接赋值给结构体的groupID字段,DisplayName对应groupName
  2. 把groupMemberIDs的字符串按逗号拆分,存入vector<string>类型的groupMemberIDs;如果该字段为NULL,就初始化一个空vector。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 12:03:18