SQL查询从数据库中的一个表中获取所有帖子,但来自特定用户的最多5个条目? [复制]
Posted
技术标签:
【中文标题】SQL查询从数据库中的一个表中获取所有帖子,但来自特定用户的最多5个条目? [复制]【英文标题】:SQL query to get all posts from a table in the db but max 5 entrys from a specific user? [duplicate] 【发布时间】:2020-12-17 20:13:47 【问题描述】:我正在构建一个 php-blog 系统,并希望在起始页面上显示每个用户的所有帖子,但最多显示五个。 我想通过数据库中的查询来做到这一点,但我不知道如何做到这一点。 我想 count() 函数会派上用场,但有人可以帮帮我
这是我今天的功能,我只是想改进它以从每个用户那里获得最多 5 个帖子
protected function getAllPostsDB()
$sql = "SELECT recipes.Recipe_ID, recipes.Title, recipes.Short_description, recipes.Step_by_step,
recipes.create_date, recipes.last_mod_date, recipes.Portions, recipes.imgPath, users.Username
FROM recipes
JOIN users
ON recipes.User_ID = users.User_ID
ORDER BY recipes.create_date DESC";
$stmt = $this->connect()->query($sql);
/* fetch all is already set to associative array*/
$result = $stmt->fetchAll();
return $result;`
【问题讨论】:
【参考方案1】:如果您运行的是 mysql 8.0,只需使用窗口函数:
SELECT r.Recipe_ID, r.Title, r.Short_description, r.Step_by_step,
r.create_date, r.last_mod_date, r.Portions, r.imgPath, u.Username
FROM (
SELECT r.*, ROW_NUMBER() OVER(PARTITION BY User_ID ORDER BY create_date DESC) rn
FROM recipes r
) r
INNER JOIN users ON r.User_ID = u.User_ID
WHERE r.rn <= 5
ORDER BY r.create_date DESC
这给出了每个用户的最后五个食谱,由列 create_date
指定。如果您需要其他排序规则,可以将ROW_NUMBER()
的ORDER BY
子句更改为其他列或列集。
【讨论】:
非常感谢,它现在工作得很好!,你救了我一夜以上是关于SQL查询从数据库中的一个表中获取所有帖子,但来自特定用户的最多5个条目? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何从 SQL Server 文件表中的二进制数据中获取文件类型?