作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我现在有点卡住了,可以使用一些快速的 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 和实际表格的行为为何如此不同?
最佳答案
仅当我们可以假设给定产品的日期值是唯一的时,以下内容才有效。如果不是这样,那么您将需要在“p1.date < p.date”之后的 where 语句中添加一个唯一值,以便每行获得一个唯一的排名。
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/
我正在尝试开发右边框/Angular 具有特定 Angular (30°) 的表格。我见过一些类似的解决方案,但它们都无法在一定程度上发挥作用。如果我想从 30° 改变到 20°,我不想花太多力气。
我是一名优秀的程序员,十分优秀!