2013-03-21 58 views
0

我想連續編號的文件集塊,例如從1到3。如何在MySQL中對塊數據進行編號?

比方說,我有以下幾點:

ID | random_nr | ordering 
.. | .. | .. 
19 | 12 | 2 
19 | 21 | 3 
20 | 13 | 1* 
20 | 14 | 2* 
20 | 22 | 3* 
21 | 15 | 1 
21 | 17 | 2 
.. | .. | 

我的代碼到目前爲止我們只所有集合的權利,通過:

SET @c = 0; 
SELECT 
`ID`, 
`random`, 
(@c := @c + 1) AS "ordering" 
FROM `tabelle` WHERE ... 

我如何可以改變它,所以我得到上述結果? 非常感謝!

+1

問題重新開始不明確 – DevelopmentIsMyPassion 2013-03-21 11:26:49

回答

0

這裏有一種方法......

SELECT x.* 
     , COUNT(*) ordering 
    FROM tabelle x 
    JOIN tabelle y 
    ON y.id = x.id 
    AND y.random_nr <= x.random_nr 
    GROUP 
    BY x.id 
     , x.random_nr; 

另一種方法是@curr和@prev標記添加到您現有的查詢。

0
SET @i = null; 
SELECT 
`ID`, 
`random`, 
(@c := IF(ID = @i, @c + 1, 1) + (@i:=ID)-ID AS "ordering" 
FROM `tabelle` WHERE ... 
ORDER BY ID 

所以每次ID是等於@i的當前值,然後在@c 1.

相關問題