SQLite3+Python3如何实现按id分组聚合所有value值的查询
SQLite 按ID分组拼接字符串解决方案
正确查询语句
SQLite 内置了group_concat()聚合函数专门用来实现分组拼接字符串的需求,你可以直接使用以下语句:
SELECT id, group_concat(value, ', ') AS concat_values FROM 替换为你的实际表名 GROUP BY id;
说明
- 你之前的写法
SELECT * FROM table GROUP BY id只返回单条value,是因为SQLite的非标准GROUP BY逻辑:未被聚合函数包裹、也没有出现在GROUP BY子句中的字段,只会取分组后的第一条记录,自然无法拿到所有value。 group_concat()第一个参数为需要拼接的字段,第二个可选参数为自定义分隔符,你需要逗号加空格的效果直接指定为,即可,不传该参数时默认使用不带空格的逗号拼接。- 如果需要调整拼接的value顺序,可以在函数内部加ORDER BY规则,例如按value字典序拼接可以写为
group_concat(value, ', ' ORDER BY value)。
Python3 调用示例
你可以直接用sqlite3模块执行上述语句:
import sqlite3 # 连接数据库 conn = sqlite3.connect("你的数据库文件路径.db") cursor = conn.cursor() # 执行查询 cursor.execute("SELECT id, group_concat(value, ', ') FROM 你的表名 GROUP BY id") result = cursor.fetchall() # 打印结果验证 for item in result: print(item) # 输出: # (123, 'val1, val3, val2') # (124, 'val2, val1') # 关闭连接 conn.close()
内容的提问来源于stack exchange,提问作者user3702643
相关产品推荐
相关产品推荐

