次の mysql クエリを検討してください。
create temporary table t (a tinyint); insert into t values (1),(1),(2);
select * from t;
-- +------+
-- | a |
-- +------+
-- | 1 |
-- | 1 |
-- | 2 |
-- +------+
select c,count(*) from (select a,count(*) c from t group by a) u
group by c;
-- +---+----------+
-- | c | count(*) |
-- +---+----------+
-- | 1 | 1 |
-- | 2 | 1 |
-- +---+----------+
上記の結果の最初の表ではa
4 文字の幅c
を占めているのに、2 番目の表では 1 文字の幅しか占めていないのはなぜですか?
select c,count(*) from (select a,count(*) c from t group by a) u
group by c with rollup;
-- +---+----------+
-- | c | count(*) |
-- +---+----------+
-- | 1 | 1 |
-- | 2 | 1 |
-- | NULL | 2 |
-- +---+----------+
上記の結果の最後の表では、NULL
割り当てられた幅よりも幅が広くなっています。これはバグですか、それとも意図した動作ですか? それが意図されている場合、なぜですか?