#php #mysql #sql #select
#php #mysql #sql #выберите
Вопрос:
Я знаю, что эта тема обсуждалась миллион раз, но у меня странный результат. Я пытаюсь выполнить задание, в котором sql-запрос будет подсчитывать количество повторяющихся неповторяющихся строк. В принципе, у меня есть следующая таблица:
ID
865
501
501
501
502
865
865
Мой запрос
select id, count(*) as total from master_huts group by id
И я получаю это
ID Name
0 (some weird number)
501 3
502 1
865 2
Это довольно прямолинейно, но я не уверен, где я ошибаюсь.
Структура таблицы
CREATE TABLE `master_huts` (
`hutids` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
Комментарии:
1. Проверьте наличие пустых строк в таблице
2. @echo_Me Проблема в том, что ^
3. @user3671491 как определяется ваш столбец id? int или varchar ?
4. вы уверены, что в вашей таблице нет 0 или каких-либо других значений? посмотрите демонстрацию здесь, она отлично работает sqlfiddle.com /#!2/f7195/1
5. если у вас большая таблица, попробуйте сделать это, чтобы увидеть, есть ли у вас значение 0
select id from yourtable where id = 0
Ответ №1:
Выполните следующие действия:
select count(id) as ocurences, id from master_huts group by id
Комментарии:
1. Это означает, что у вас действительно есть строка с id = 0
2. Моя ошибка, как обычно. Спасибо, приятель.
Ответ №2:
Просто используйте id в count вместо *
вот так…
select id, count(id) as total from whatever group by id
Комментарии:
1. Сделал это, но все равно я получаю 0 в качестве первой строки
2. Вы уверены, что в вашей таблице точно такие же данные, предоставленные вами?
3. Решаемая :). моя ошибка. Извините
Ответ №3:
попробуйте это и посмотрите, не получится ли у вас что-нибудь странное:
select id, count(*) as total from master_huts where id != 0 group by id;