3

たとえば、それぞれ 5 つの行のグループで構成されるテーブルがあります。各グループの各行には、dateそのグループに固有の値があります。

クエリでやりたいことは、テーブルを調べて、このdate値が変更されたときにユーザー変数 (@count) をインクリメントすることです。つまり、@count は、行数ではなく、グループ数と等しくなければなりません。

ご参考までに、現在のクエリは次のようになります。

SELECT @row := @row +1 AS rownum, date
FROM ( SELECT @row := 0 ) r, stats

どうもありがとう。

4

2 に答える 2

5

このようなものはどうですか?

SELECT 
    (CASE WHEN @date <> date THEN @row := @row +1 ELSE @row END) AS rownum, 
    @date:= date, 
    date
FROM ( SELECT @row := 0, @date := NOW() ) r, stats
于 2012-08-03T21:54:35.303 に答える
2

実行中のクエリに答えるためにユーザー変数は必要ありません。ユーザー変数を使用する理由はありますか (ランキング機能をエミュレートするためなど)。

そうでない場合:

-- how many groups are there?
select count(distinct date) distinct_groups from table;

-- each group and count of rows in the group
select date, count(*) from table group by date;

-- if you want the Nth row from each group, assuming you have an auto_increment called id:
select *
  from table
  join ( select date, max(id) id
           from table
          group by date
  ) sq
  on table.id = sq.id
于 2012-08-03T22:03:08.000 に答える