0

たとえば、ファイルセットのチャンクに連続して番号を付けたいと思います。たとえば、1 から 3 までです。

私が次のものを持っているとしましょう:

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 ...

上記の結果が得られるように変更するにはどうすればよいですか?どうもありがとう!!

4

2 に答える 2

0

これが1つの方法です...

 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;

もう1つの方法は、既存のクエリに@currマーカーと@prevマーカーを追加することです。

于 2013-03-21T11:49:15.510 に答える
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 からやり直します。

于 2013-03-21T12:07:33.760 に答える