我确实需要从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
正如您所看到的,主要是我需要从'thread'表中选择线程的日期行,以及每个线程的第二个帖子的日期行,这些都在您在WHERE CLAUSE中看到的条件下。由于每个帖子都有很多帖子,而且我每个帖子只需要一个结果,所以我为此目的使用了GROUP BY CLAUSE。
此查询将仅返回一个帖子的日期行及其相关的唯一主题。
我的问题是:
备注:
提前获得建议:)
答案 0 :(得分:1)
也许这个问题:"limit the number of rows to join to in mysql"或者更确切地说是指向How to select the first/least/max row per group in SQL的指针可能有所帮助。
尽管如此,这一切都归结为子查询。