gpt4 book ai didi

SQL:限制链接到每个连接行的行

转载 作者:行者123 更新时间:2023-11-29 03:14:37 25 4
gpt4 key购买 nike

我有某些情况需要从 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。

此查询将仅返回一个帖子的日期线及其相关的唯一线程。

我的问题是:

  1. 如何限制每个返回的线程每个论坛!?假设我只需要 5线程 - 作为最大值 - 是为声明的每个论坛返回WHERE CLAUSE 'forum.forumidIN(1,2,3)',这怎么可能实现了。
  2. 有什么建议优化这个查询(当然在解决第一点之后)?

注意事项:

  • 我不喜欢使用子查询,但是如果这是唯一可用的解决方案我会接受的。双重查询不受到推崇的。我确定有一个聪明的这种情况的解决方案。
  • 我使用的是 MySQL 4.1+,但如果你知道另一个引擎的答案,只是分享。

提前感谢您的建议:)

最佳答案

也许这个 SO 问题:"limit the number of rows to join to in mysql"或者更准确地说它指向How to select the first/least/max row per group in SQL的指针可以提供帮助。

尽管我认为这一切都归结为子查询。

关于SQL:限制链接到每个连接行的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2649596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com