У нас есть таблица MyISAM с одним столбцом bit
и двумя строками, содержащими 0
и 1
.Мы группируем по этому столбцу, делаем подсчет и выбираем его.Ожидается следующий результат:
select count( bit), bit from tab GROUP BY bit;
| count(bit) | bit |
|------------|-----|
| 1 | 0 |
| 1 | 1 |
Но при использовании ключевого слова distinct
выходное значение столбца всегда равно 1
.Почему?
select count(distinct bit), bit from tab GROUP BY bit;
| count(bit) | bit |
|------------|-----|
| 1 | 1 | # WHYYY
| 1 | 1 |
Я сканировал документацию и Интернет, но безуспешно.Вот настройки:
CREATE TABLE `tab` (
`bit` bit(1) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8; # When using InnoDB everything's fine
INSERT INTO `tab` (`bit`) VALUES
(CONV('1', 2, 10) + 0),
(CONV('0', 2, 10) + 0);
PS: еще одна вещь.Я делал несколько экспериментов.При использовании group_concat
столбец bit
снова становится независимым.
select count(distinct bit), group_concat(bit) from tab GROUP BY bit;
| count(bit) | bit |
|------------|------------|
| 1 | 1 byte (0) |
| 1 | 1 byte (1) |