SQLite多表关联查询如何拼接多联系人信息到单个单元格
SQLite 多表关联合并查询语句
你可以直接使用以下查询实现需求:
SELECT d.*, r.account, r.state, GROUP_CONCAT(printf('%s(%s)', IFNULL(c.name, '未知姓名'), IFNULL(c.email, '无联系方式')), ',') AS contacts_info FROM Data d LEFT JOIN Results r ON d.results_id = r.id LEFT JOIN Contacts_list cl ON d.contact_id = cl.id LEFT JOIN Contacts c ON cl.contact_id = c.id GROUP BY d.id
逻辑说明
- 所有关联均使用
LEFT JOIN,确保Data表的全量数据都被保留,不会因为关联不到其他表的记录而丢失行,最终输出行数和Data表原始行数完全一致 - 用
printf函数将联系人姓名和邮箱拼接为要求的「姓名(邮箱)」格式,IFNULL用于处理字段为空的异常场景,你可以根据实际业务调整默认值 - SQLite内置的
GROUP_CONCAT函数会将同一条Data记录对应的多个联系人信息用英文逗号拼接为单个字符串,符合输出要求 - 最终按Data表的主键
id分组,保证每条Data记录只对应一行结果
内容的提问来源于stack exchange,提问作者tanderson
相关产品推荐
相关产品推荐

