首页 > 程序开发 > 【SQL】获取每篇文章的第一条评论

【SQL】获取每篇文章的第一条评论

2010年2月3日 发表评论 阅读评论

一个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

如你有更好的解法,欢迎留言交流!


枫芸志原创文章,转载请注明来源并保留原文链接

本文链接:http://witmax.cn/sql-each-first.html


分类: 程序开发 标签: 1,428次阅读
  1. 2010年2月4日15:25 | #1

    额,这方面还真的是看不懂

    [回复]

    晴枫 回复:

    @Firm, 估计你没接触过,一般程序员会比较熟

    [回复]

    Firm 回复:

    @晴枫, 恩,俺是半路出家,一些基础的都看不懂

    [回复]

    晴枫 回复:

    @Firm, 慢慢学,一点点积累,需要一个过程的

    [回复]

  2. 2010年2月4日23:17 | #2

    感觉很厉害,我基本不懂,汗呀,不过还是支持版主呀

    [回复]

    晴枫 回复:

    @寄之秋, 技术领域,不做这行看不懂正常
    你的站打不开了?

    [回复]

  3. xw332
    2010年7月7日09:15 | #3

    惭愧,作为程序员我也看不明白。。
    SELECT * FROM (SELECT * FROM comment ORDER BY comment_time) GROUP BY post_id LIMIT 1 , 2
    除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。

    [回复]

  4. 2011年12月6日06:14 | #4

    请教博主 如何获取wordpress文章的第一条评论~ 我是一个文章列表 想在每篇文章下面分别都显示一条对应的文章评论~ 等回应

    [回复]

  1. 本文目前尚无任何 trackbacks 和 pingbacks.
订阅评论
  欢迎参与讨论,请在这里发表您的看法、交流您的观点。