所以我在mysql中查找了如何从oracle模拟row_number函数并遇到了这个:http ://www.xaprb.com/blog/2005/09/27/simulating-the-sql-row_number-function/
我的问题是每个类型组的 COUNT(*) 是如何继续上升的。variety
由于这是 group by 的第二部分,它不会为每个不同的 s 重置吗?
所以我在mysql中查找了如何从oracle模拟row_number函数并遇到了这个:http ://www.xaprb.com/blog/2005/09/27/simulating-the-sql-row_number-function/
我的问题是每个类型组的 COUNT(*) 是如何继续上升的。variety
由于这是 group by 的第二部分,它不会为每个不同的 s 重置吗?
group by 不会重置,因为分组是使用两列完成的。基本上连接后形成的表有很多条目,所以计数上升。
查询中的以下条件“and l.variety >= r.variety”限制行数,“fuji”排在第一位,“limbertwig”排在最后,按字母顺序决定计数
因此,在没有上述条件的情况下,count(*) 将等于 = 3。
关键是加入条件l.variety >= r.variety
。这会将行从l
集合中的第一个上的所有品种添加到结果集中r
,然后少一个,然后少一个,等等。在没有的情况下运行查询GROUP BY
,你会看到。