【SQL】获取每篇文章的第一条评论
一个SQL查询问题,表T有字段a、字段b、字段c等多个字段,其中中字段a在不同数据行中有重复;要求获取多个数据行,每个不同的字段a值对应一个数据行,每个数据行为包含相同字段a值的数据行取字段b值最小的一行)。
举例来说,从文章评论表获取每篇文章的第一条评论,显示需要只取从第2条开始的前2条,表comment内容如下
comment_id | post_id | comment_time | comment_content |
---|---|---|---|
1 | 1 | 2010-1-1 00:00:00 | a |
2 | 3 | 2010-1-1 01:00:00 | b |
3 | 3 | 2010-1-1 02:00:00 | c |
5 | 4 | 2010-1-1 05:00:00 | e |
4 | 4 | 2010-1-1 04:00:00 | d |
表comment中post_id字段有重复,需要选出comment_time最小的一项,希望获取的结果是
comment_id | post_id | comment_time | comment_content |
---|---|---|---|
2 | 3 | 2010-1-1 01:00:00 | b |
4 | 4 | 2010-1-1 04:00:00 | d |
可使用以下SQL语句:
SELECT * FROM comment WHERE comment_id IN (SELECT MIN(comment_id) FROM comment GROUP BY post_id) LIMIT 1 , 2
但解决得并不完美,这里利用了comment_id的自增性(大小关系等同于comment_time),而不是直接用发布时间comment_time来比较。
想到可使用下面的SQL语句:
SELECT * FROM (SELECT * FROM comment ORDER BY comment_time) GROUP BY post_id LIMIT 1 , 2
如你有更好的解法,欢迎留言交流!
标签: SQL
请教博主 如何获取wordpress文章的第一条评论~ 我是一个文章列表 想在每篇文章下面分别都显示一条对应的文章评论~ 等回应
惭愧,作为程序员我也看不明白。。
SELECT * FROM (SELECT * FROM comment ORDER BY comment_time) GROUP BY post_id LIMIT 1 , 2
除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。
感觉很厉害,我基本不懂,汗呀,不过还是支持版主呀
额,这方面还真的是看不懂