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

相关文章
-
MySQL Workbench怎么建立数据库(附:sql语句创建数据库方法) 2023-07-20 12:22:29
-
MySQL Workbench是什么?(附:如何设置中文教程) 2023-07-20 11:42:31
-
mysql修改表结构的语句是什么 2023-05-14 07:00:03
-
MySQL 语法整理介绍 2023-05-14 07:00:03
-
mysql驱动是什么 2023-05-14 07:00:03
-
mysql怎么将查询结果赋给变量 2023-05-14 07:00:03
-
qt5.8如何连接mysql 2023-05-14 07:00:03
-
mysql乐观锁和悲观锁的区别是什么 2023-05-14 07:00:03
-
一起聊聊MySQL主从延时的处理方案 2023-05-14 07:00:03
-
mysql怎么查询临时表 2023-05-14 07:00:02