gpt4 book ai didi

mysql - 使用 INNER JOIN 的请求中 `ORDER BY` 之前的 `GROUP BY`?

转载 作者:行者123 更新时间:2023-11-29 12:37:05 26 4
gpt4 key购买 nike

最初,我需要构建一个查询,从按最新文章的日期排序的一个表中获取sites(articles放置在单独的表中) .

我构建了以下查询:

SELECT *
FROM `sites`
INNER JOIN `articles` ON `articles`.`site_id` = `sites`.`id`
ORDER BY `articles`.`date` DESC
GROUP BY `sites`.`id`

我认为SELECTINNER JOIN将获取所有帖子并将一个网站与每个帖子相关联, ORDER BY 将按发布日期的降序排列结果 GROUP BY 将获取每个网站的第一个帖子 我会得到所需的结果。

但是我收到 MySQL 错误#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 7 行的“GROUP BYsites.idLIMIT 0, 30”附近使用的正确语法

如果我将 GROUP BY 之前 ORDER BY 语句放在查询中,但它不会给我最新的 每个站点的帖子。相反,结果将在分组之后排序,这不是我需要的(实际上我更喜欢在分组后以另一种方式排序)。

我读了几个非常相似的问题,但它们都与存储在单个表中的数据相关,从而可以使用 MAXMIN 函数。

我应该怎样做才能实现我所需要的?

最佳答案

您可以使用子查询/派生表/内联 View 或自排除联接,例如:

SELECT s.*, a1.*
FROM `sites` s
INNER JOIN `articles` a1 ON a1.`site_id` = s.`id`
LEFT OUTER JOIN `articles` a2 ON a2.`site_id` = a1.`site_id`
AND a2.`date` > a1.`date`
WHERE
a2.`site_id` IS NULL
ORDER BY
a1.`date` DESC

原则是您选择的网站中没有文章日期大于任何其他文章日期。

关于mysql - 使用 INNER JOIN 的请求中 `ORDER BY` 之前的 `GROUP BY`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26613882/

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