2010-09-22 3 views
1

У меня странная проблема с MySQL и хотел бы видеть, если у сообщества есть какая-либо мысль:группы MySQL по вопросу

У меня есть таблица «ТПС», который содержит

____________ 
| id | sdate | 

И я 'm пытается выполнить этот запрос:

select id, max(sdate) as sd from tbl where id in(123) group by id; 

Это не дает результатов. Однако этот запрос:

select id, sdate from tbl where id in(123); 

Возвращает много результатов с идентификаторами и датами.

Почему главный запрос не дает результатов?

+0

Вы не комментируете для своего предложения IN? –

+0

Нет. И запрос выше имеет только 1 элемент в предложении IN. –

+0

Не могу поверить, что это возможно – zerkms

ответ

0

Оказалось, что индекс был поврежден. Выполнение следующего решения проблемы:

REPAIR TABLE tbl; 
+0

Казалось бы, когда я упомянул об этом, так как в рабочем случае он мог игнорировать индекс. :) –

1

Таким образом, идентификаторы в этой таблице не различны, не так ли? Например, это может быть список вопросов здесь, в StackOverflow с просмотренной датой, и каждый идентификатор запроса может появляться несколько раз в результатах. В противном случае, если идентификаторы всегда уникальны, тогда нет смысла делать на них GROUP BY. Когда вы ограничиваете результаты одним идентификатором, вам не требуется технически требование GROUP BY, поскольку MAX() является агрегированной функцией, которая возвращает одну строку.

Каков тип данных sdate? INT/дата и время?

Это идеальное решение для поставки единого идентификатора в предложение IN(); он просто не может быть пустым: IN().

Возможно ли предоставить выход «DESCRIBE tbl;» и несколько строк примеров?

+0

Правильно, идентификатор не отличается. И группа нужна при указании нескольких элементов в IN(). Тип данных столбцов: case_id = int и sdate = datetime. –

+0

Да, я не могу воспроизвести проблему, которую вы видите с MySQL 5.1.37. Это может иметь какое-то отношение к индексам вашей таблицы и когда они используются или игнорируются между этими двумя запросами. Можете ли вы вывести «ПОКАЖИТЕ УКАЗЫ ОТ tbl»? Попробуйте «REPAIR TABLE tbl». –

+0

'tbl', 0, 'PRIMARY', 1, 'id', 'A', 3681817,, '', '', 'BTREE', '' 'tbl', 0, 'PRIMARY', 2, ' sdate ',' A ', 3681817,,' ',' ',' BTREE ',' ' ' tbl ', 0,' PRIMARY ', 3,' source ',' A ', 3681817, 2,' ', '', 'BTREE', '' –

Смежные вопросы