我现在有点卡住了,可以使用一些快速的 MySQL 帮助。
假设我有一个包含产品评论的表格,列product_id
, customer
, date
。现在,对于每个不同的产品,我想获得 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 和实际表的行为怎么会如此不同?