我正在構(gòu)建一個(gè) php 博客系統(tǒng),希望在起始頁(yè)上顯示每個(gè)用戶的所有帖子,但最多顯示 5 個(gè)帖子。我想通過數(shù)據(jù)庫(kù)中的查詢來做到這一點(diǎn),但我不知道如何做到這一點(diǎn)。我想 count() 函數(shù)會(huì)派上用場(chǎng),但是有人可以幫助我嗎這是我今天的功能,我只是想改進(jìn)它以獲取每個(gè)用戶最多五個(gè)帖子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 回答

翻過高山走不出你
TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果您運(yùn)行的是 MySQL 8.0,只需使用窗口函數(shù):
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
這給出了每個(gè)用戶的最后五個(gè)食譜,如列指定的create_date。如果您需要其他排序規(guī)則,可以將ORDER BYof 子句更改為其他列或列集。ROW_NUMBER()
- 1 回答
- 0 關(guān)注
- 135 瀏覽
添加回答
舉報(bào)
0/150
提交
取消