Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
GROUP BY в MySQL 5 (Алексей) 19/03/2008 - 10:58:53
      Re: GROUP BY в MySQL 5 (Dimka) 19/03/2008 - 16:49:31
      Re: GROUP BY в MySQL 5 (bac) 19/03/2008 - 16:51:38
      Re: GROUP BY в MySQL 5 (Алексей) 19/03/2008 - 17:17:35
      Re: GROUP BY в MySQL 5 (bac) 19/03/2008 - 17:31:15
      Re: GROUP BY в MySQL 5 (Алексей) 20/03/2008 - 09:03:57
      Re: GROUP BY в MySQL 5 (Ol) 21/03/2008 - 19:06:51
      Re: GROUP BY в MySQL 5 (nick) 20/03/2011 - 22:22:57
      Re: GROUP BY в MySQL 5 (Дмитрий) 18/04/2011 - 11:07:18

> Original message text:
> From: Алексей - 19/03/2008 - 10:58:53
> Subject:GROUP BY в MySQL 5
> -----------------
> Добрый день!
>
> Столкнулся с проблемой группировки строк в результатах запроса - практика никак не стыкуется с теорией
>
> есть тестовая таблица, 4 поля: автоинкриментный id, record, user, timeStamp
>
> CREATE TABLE `test` (
> `id` int(11) NOT NULL auto_increment,
> `record` int(11) NOT NULL,
> `user` int(11) NOT NULL,
> `timeStamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
> PRIMARY KEY (`id`)
> ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;
>
> INSERT INTO `test` (`id`, `record`, `user`, `timeStamp`) VALUES
> (1, 1, 1, '2008-03-19 10:24:13'),
> (2, 1, 2, '2008-03-19 10:24:41'),
> (3, 2, 2, '2008-03-19 10:25:16'),
> (4, 2, 1, '2008-03-19 10:25:26');
>
> делаю простейшую выборку:
>
> SELECT * FROM `test` GROUP BY record
>
> получаю
>
> id record user timeStamp
> 1 1 1 2008-03-19 10:24:13
> 3 2 2 2008-03-19 10:25:16
>
> хотя ожидалось такое:
>
> id record user timeStamp
> 1 1 1 2008-03-19 10:24:13
> 2 1 2 2008-03-19 10:24:41
> 3 2 2 2008-03-19 10:25:16
> 4 2 1 2008-03-19 10:25:26
>
> на каком основании выкинуты строки 2 и 4 ? они должны входить в набор по условию GROUP BY, т.к. никаких функций группировки не задано
>


From: bac - 19/03/2008 - 16:51:38
Subject:GROUP BY в MySQL 5
-----------------
Вам совершенно верно выдает сервер.
Группировка это значит показать одну запись из группы и если есть выполнить групповые операции (COUNT, SUM, AVG и т.п.) на записями объединенными в группу по указанному признаку.

У вас признак record всего в базе данных два таких значения, значит будет две записи с разными значениями record, а вот другие поля будут показаны случайно из значений записей в группе!

Про это написано в документации.

Удачи!



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
38292



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |