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

如何使用Python和SQL合并同一fk_case_id对应的多行文本内容

两种实现方案

方案1:SQL层面直接实现(性能最优,推荐)

直接在查询时用数据库自带的分组拼接函数,一次查询得到结果,不需要额外在代码里遍历处理。
不同数据库对应的函数如下:

  • MySQL:使用GROUP_CONCAT函数,指定分隔符为空格即可
  • PostgreSQL/SQL Server:使用STRING_AGG函数

MySQL示例代码:

from connect_database import mycursor,db
# 按fk_case_id分组,用空格拼接同组的content
mycursor.execute("SELECT fk_case_id, GROUP_CONCAT(content SEPARATOR ' ') AS full_content FROM mt_page_file_contents GROUP BY fk_case_id")
myresult = mycursor.fetchall()
for x in myresult:
    fk_case_id = x[0]
    full_text = x[1]
    # 此处可直接使用分组拼接后的结果

查询结果样例:

fk_case_idfull_content
468This is to inform the record tommorrow for studies
469Hello welcome to school

方案2:Python代码层面处理(无需修改SQL查询语句)

如果不方便调整SQL逻辑,直接对现有的查询结果用字典做分组拼接即可,代码如下:

from connect_database import mycursor,db
mycursor.execute("select content,pk_content_id,fk_case_id from mt_page_file_contents")
myresult = mycursor.fetchall()

# 初始化字典存储分组结果,key为fk_case_id,value为拼接后的完整文本
case_content_map = {}
for x in myresult:
    content = x[0]
    fk_case_id = x[2]
    if fk_case_id not in case_content_map:
        case_content_map[fk_case_id] = content
    else:
        # 同组内容用空格拼接
        case_content_map[fk_case_id] += f" {content}"

# 遍历得到最终的分组拼接结果
for fk_case_id, full_text in case_content_map.items():
    # 此处可处理每个case的完整文本
    print(fk_case_id, full_text)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:48:01