我有某种情况需要从MySQL查询获得某些结果集,让我们先看一下当前查询,然后问我的问题:
SELECT thread.dateline AS tdateline, post.dateline AS pdateline, MIN(post.dateline) FROM thread AS thread LEFT JOIN post AS post ON(thread.threadid = post.threadid) LEFT JOIN forum AS forum ON(thread.forumid = forum.forumid) WHERE post.postid != thread.firstpostid AND thread.open = 1 AND thread.visible = 1 AND thread.replycount >= 1 AND post.visible = 1 AND (forum.options & 1) AND (forum.options & 2) AND (forum.options & 4) AND forum.forumid IN(1,2,3) GROUP BY post.threadid ORDER BY tdateline DESC, pdateline ASC
如您所见,主要是我需要从“线程”表中选择线程的日期线,除了每个线程的第二个帖子的日期线,这都是在您在WHERE CLAUSE中看到的条件下进行的。由于每个线程有很多帖子,而且每个线程只需要一个结果,因此我为此使用了GROUP BY CLAUSE。
此查询将仅返回一个帖子的日期行及其相关的唯一主题。
我的问题是:
笔记:
提前提出建议:)
也许这样的问题:“限制在mysql中要加入的行数”,或更确切地说,指向如何在SQL中选择每个组的第一/最小/最大行的指针可能会有所帮助。
尽管我认为这全都归结为子查询。