【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 子句在视图、内嵌函数、派生表和子查询中无效。
[回复]
感觉很厉害,我基本不懂,汗呀,不过还是支持版主呀
[回复]
晴枫 2月 5th, 2010 下午11:15 回复:
@寄之秋, 技术领域,不做这行看不懂正常
你的站打不开了?
[回复]
额,这方面还真的是看不懂
[回复]
晴枫 2月 4th, 2010 下午7:38 回复:
@Firm, 估计你没接触过,一般程序员会比较熟
[回复]
Firm 2月 5th, 2010 下午4:49 回复:
@晴枫, 恩,俺是半路出家,一些基础的都看不懂
[回复]
晴枫 2月 5th, 2010 下午11:16 回复:
@Firm, 慢慢学,一点点积累,需要一个过程的
[回复]