2012-10-25 44 views
0

於是我擡起頭來如何從MySQL中的Oracle模擬ROW_NUMBER函數和跨越這來了:http://www.xaprb.com/blog/2005/09/27/simulating-the-sql-row_number-function/MySQL的行號混淆

我的問題是如何將COUNT(*)繼續下去,爲每個類型組。是不是爲每個不同的variety重置,因爲這是該組的第二部分?

+0

不是因爲它的'group by l.variety'而不是'r.variety',它是來自不同表格的列。所以'l.variety'對每一行都有新的價值,並與所有'r.variety'列值進行比較。 – Omesh

回答

1

關鍵是加入條件l.variety >= r.variety。這將l中的行添加到r集中第一個的所有變種的結果集中,然後減少一個,然後減少一個等等。運行不含GROUP BY的查詢,您會看到。

1

group by將不會重置,因爲使用兩個列進行分組。基本上連接後形成的表有多個條目,因此數量增加。

繼查詢條件「和l.variety> = r.variety」限制沒有行的, 「富士」是第一和「limbertwig」是最後的字母順序決定計數

所以在不存在以上條件計數(*)本來就是= 3。