gpt4 book ai didi

Mysql:获取group by的前x条记录

转载 作者:行者123 更新时间:2023-11-29 20:17:21 25 4
gpt4 key购买 nike

我有一张 table ,里面摆满了商店的产品。这些产品有 valid_from 和 valid_to 日期。在我的查询中,我只想获得每个商店当前有效的前 x 条记录,按最后插入描述排序。

我当前正在使用以下查询:

SELECT * FROM 
(
SELECT
s.id as shopid, ss.name as shopname, p.name as productname, p.validfrom, p.validto
FROM
product p
JOIN
shop s ON p.shopid = s.id
WHERE
s.status = 'Active' AND
(now() BETWEEN p.validfrom and p.validto)
ORDER BY p.insert DESC
) as a

GROUP BY
shopid
ORDER BY
shopname asc

这显然只给我每个商店的最新记录,但我想要最新的 2 或 3 条记录。我怎样才能实现这个目标?

额外问题:我想要每个商店都不同。因此,对于商店 A,我只想拥有第一条记录,而对于商店 B,我只想拥有前两条记录。您可能会假设每个商店都有一些保存该编号的数据库字段,例如 s.num_of_records。

类似的问题(可能重复)让我找到了正确的方向,但它并没有完全解决我的问题(请参阅最新评论)

最佳答案

它的工作原理是根据之前的 shopid 为每个记录赋予一个排名。如果shopid相同,我将其排名+1。否则我将其排名为 1。

但是仍然存在问题。尽管我使用的是 shopid 订单,但它并没有对所有商店进行正确排名。我在查询中添加了lastshopid来检查,虽然结果中的记录是按商店排序的,但lastshopid有时有另一个id。我想这一定是因为排序是在最后而不是在开头完成的。

有人知道如何解决这个问题吗?我需要按正确的顺序排列商店才能使该排名解决方案发挥作用。

关于Mysql:获取group by的前x条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39662789/

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