相关疑难解决方法(0)

如何选择每个类别的最新四个项目?

我有一个项目数据库.每个项目都使用类别表中的类别ID进行分类.我正在尝试创建一个列出每个类别的页面,在每个类别下面我想要显示该类别中的4个最新项目.

例如:

宠物用品

img1
img2
img3
img4
Run Code Online (Sandbox Code Playgroud)

宠物食品

img1
img2
img3
img4
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过查询每个类别的数据库轻松解决这个问题,如下所示:

SELECT id FROM category

然后迭代该数据并查询每个类别的数据库以获取最新的项目:

SELECT image FROM item where category_id = :category_id 
ORDER BY date_listed DESC LIMIT 4

我想弄清楚的是,如果我可以使用1个查询并获取所有数据.我有33个类别,所以我想也许这有助于减少对数据库的调用次数.

任何人都知道这是否可行?或者,如果33次通话不是那么大,我应该这么简单.

mysql sql greatest-n-per-group

31
推荐指数
2
解决办法
1万
查看次数

MySQL为表中的每个人选择前X个记录

有没有更好的方法从MySQL表中获得多个"前X"结果?当不同foo的数量很小时,我可以通过联合轻松完成此任务:

(SELECT foo,score FROM tablebar WHERE (foo = 'abc') ORDER BY score DESC LIMIT 10) 
UNION 
(SELECT foo,score FROM tablebar WHERE (foo = 'def') ORDER BY score DESC LIMIT 10)
Run Code Online (Sandbox Code Playgroud)

我显然可以继续为foo的每个值添加联合.但是,当foo有500多个不同的值时,这是不实际的,我需要每个的前X个.

mysql greatest-n-per-group

4
推荐指数
1
解决办法
6509
查看次数

标签 统计

greatest-n-per-group ×2

mysql ×2

sql ×1