MySQL 中有用户表和评论表,如何获取用户表所有内容 + 每个用户最后一条评论内容(如果存在的话)
环境:
1.测试环境:win10,wamp
2.生产环境:windows server 2016,wamp
MySQL中有两张表:
1.user
2.comments
1.user的结构为:
用户id 姓名 年龄 地址
id name age addr
2.comments的结构为:
评论id 用户id 评论内容 评论时间
id user_id comments c_time
说明:用户-评论 为 1-N,一个用户有多条评论
需求:
我现在需要取出user的所有内容,以及每个用户的最后一条评论内容、评论时间(如果有的话),方便按评论时间来进行排序
问题:
我用了join语句,语句如下:
SELECT * from user as a left join (SELECT user_id,comments,c_time FROM comments WHERE c_time IN (SELECT MAX(do_time)FROM comments GROUP BY user_id)) as b on a.id=b.user_id order by b.comments desc,b.do_time desc,a.login_name asc
在测试环境里面没有问题,10万级别的数据也是很快就取出来了,结果在生产环境里面就不行,一执行就一直转圈,一直等待MySQL最大执行时间360后才停止。
请问:
1.上面我写的语句有什么问题吗?
2.要实现这个功能,最好应该怎么办呢?
推荐文章: