详解MySql Group by函数真正的打开方法!

文 / @WordPress主题

改为使用子查询查询每个文章的最大回复时间,并用此子查询作为外查询的过滤条件:

SELECT
tp.oid,
tp.posts_name,
tc2.msg_content,
tc2.create_time
FROM
t_posts tp
LEFT JOIN t_comment tc ON tp.oid = tc.posts_id
JOIN (
SELECT
tc.posts_id,
MAX(tc.create_time) AS max_time
FROM
t_comment tc
GROUP BY
tc.posts_id
) tmax ON tc.posts_id = tmax.posts_id AND tc.create_time = tmax.max_time
LEFT JOIN t_comment tc2 ON tp.oid = tc2.posts_id
ORDER BY
tc2.create_time DESC

首先使用子查询查询每个文章的最大回复时间。然后在外查询中将文章表和留言表连接,并通过左连接保证即使某个文章没有留言记录也能查询到。然后将每条留言记录连接到对应的文章记录上,并通过内连接将留言记录限制为最大回复时间的记录。最后将所有留言记录连接至文章记录上,通过排序让最新的留言记录排在前面。这样就能正确查询每篇文章的最新回复记录了。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。