0

所以我在mysql中查找了如何从oracle模拟row_number函数并遇到了这个:http ://www.xaprb.com/blog/2005/09/27/simulating-the-sql-row_number-function/

我的问题是每个类型组的 COUNT(*) 是如何继续上升的。variety由于这是 group by 的第二部分,它不会为每个不同的 s 重置吗?

4

2 回答 2

1

group by 不会重置,因为分组是使用两列完成的。基本上连接后形成的表有很多条目,所以计数上升。

查询中的以下条件“and l.variety >= r.variety”限制行数,“fuji”排在第一位,“limbertwig”排在最后,按字母顺序决定计数

因此,在没有上述条件的情况下,count(*) 将等于 = 3。

于 2012-10-25T14:46:06.480 回答
1

关键是加入条件l.variety >= r.variety。这会将行从l集合中的第一个上的所有品种添加到结果集中r,然后少一个,然后少一个,等等。在没有的情况下运行查询GROUP BY,你会看到。

于 2012-10-25T14:53:26.797 回答