gpt4 book ai didi

MySQL为每个不同的,获得一定数量的条目

转载 作者:行者123 更新时间:2023-11-29 03:39:22 26 4
gpt4 key购买 nike

我现在有点卡住了,可以使用一些快速的 MySQL 帮助。

假设我有一个包含产品评论的表格,列 product_idcustomerdate。现在,对于每个不同的产品,我想获得 3 个第一条评论。ORDER BY date 很简单,但我坚持如何为每个不同的 product_id 准确获取 3 个条目。由于都在同一张表中,INNER JOIN 没有任何意义,GROUP BY 也没有。那么,有什么想法吗?

编辑:我已经成功地在 SQLFiddle 上使用了这个查询:

SELECT * FROM (
SELECT customer, DATE, p_asin, @curTop :=
CASE WHEN (
@prevP_asin <> p_asin
)
THEN 1
ELSE @curTop +1
END AS Top, @prevP_asin := p_asin
FROM reviews2 r, (
SELECT @curTop :=0
) A
ORDER BY r.p_asin, r.date ) B
WHERE top <=3

但出于某种原因,当我尝试将它应用到我在 PhpMyAdmin 中的表格时,新产品的 Top 编号不是从 1 开始,而是一起计数。 Fiddle 和实际表格的行为为何如此不同?

最佳答案

仅当我们可以假设给定产品的日期值是唯一的时,以下内容才有效。如果不是这样,那么您将需要在“p1.date < p.date”之后的 where 语句中添加一个唯一值,以便每行获得一个唯一的排名。

SQLFiddle here

SELECT * FROM (
SELECT
product_id,
customer, (
select count(*) as cnt from products p1
where p1.product_id = p.product_id and
p1.date < p.date
) rnk
FROM
products P
ORDER BY
P.product_id, P.date
) A
WHERE rnk < 3

关于MySQL为每个不同的,获得一定数量的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16320536/

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