mysql 查数据,以json形式(一条中包含多个子数据)
com_post_response回复表/回复帖子/回复回复
也就是说所有回复都存在com_post_response表
现在,我查一条回复,想要看到他的子回复怎么做(如图)
表结构图:消息表
id | int | |
post_id | int | 帖子ID |
user_id | int | 用户ID |
conment_time | datetime | 评论时间 |
verify_state | int | 审核状态 0待审核 1发布 2隐藏 |
conment_content | varchar | 评论内容 |
conment_type | int | 1回复帖子 2回复用户 |
conment_user_id | int | 回复用户ID |
is_complain | int | 是否被举报 1是0否 |
valid | int | 有效值 |
create_date | datetime | 建立日期 |
response_comment_id | int | 回复评论ID 如果回复帖子 则为0 |
modify_date | datetime | 修改日期 |
SELECT r1.id,u1.nickname,u1.id uid,u1.avatar,r1.conment_content,r1.conment_time,r1.post_id
,CONCAT('[',substring_index(group_concat(JSON_OBJECT('nickname',u2.nickname,'uid',u2.id,'avatar',u2.avatar,'conment_content',
r2.conment_content,'conment_time',r2.conment_time,'h_uid',u3.id,'h_avatar',u3.avatar,'h_nickname',u3.nickname)),',',16),']') sp,COUNT(r2.id) huifushuliang
FROM com_post_response r1
LEFT JOIN com_post_response r2 on r2.response_comment_id=r1.id and r2.verify_state!=2 and r2.conment_type=2
LEFT JOIN xyb_user u1 on r1.user_id=u1.id
LEFT JOIN xyb_user u2 on r2.user_id=u2.id
LEFT JOIN xyb_user u3 on r2.conment_user_id=u3.id
where r1.verify_state!=2 and r1.conment_type=1 #and r1.post_id=bl_post_id//帖子id
GROUP BY r1.id;
这一句为主要:我解析一下 最里层是建立json格式的字符串 {},{}格式
substring_index :显示数量 (16是里面有8给值我显示两条所以为16)
'nickname' : 别名
CONCAT:拼接成json的字符串
COUNT(r2.id) :回复数量
CONCAT('[',substring_index(group_concat(JSON_OBJECT('nickname',u2.nickname,'uid',u2.id,'avatar',u2.avatar,'conment_content',
r2.conment_content,'conment_time',r2.conment_time,'h_uid',u3.id,'h_avatar',u3.avatar,'h_nickname',u3.nickname)),',',16),']') sp,COUNT(r2.id) huifushuliang
当然这只是做外面的展示,当字符串过长时会省略超出255的文本
当点击详细时可以再从后台获取多的值
最后查出来的值
sp的值:
如果你觉得这篇内容对你挺有启发请点赞+关注
3、也欢迎关注我的博客哦
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?