GROUP BY и сортировка - Visavi.net https://visavi.net/ RSS - Visavi.net https://visavi.net/assets/img/images/logo_small.png RSS - Visavi.net https://visavi.net/ [email protected] (admin) [email protected] (admin) Sun, 01 Dec 2024 03:57:28 +0300 20. <strong>Aligan</strong>, не 1, а 6 он возвращает. я в 19 посте подредактировал немного твой запрос.<br> 21. <strong>Aligan</strong>, мне подзапросы не нужны<img src="https://visavi.net/uploads/stickers/smile.gif" alt="smile"> https://visavi.net/topics/11597/205511 GROUP BY и сортировка SD Fri, 16 Jul 2010 14:47:13 +0400 Сообщения https://visavi.net/topics/11597/205511 Вот правильный запрос<br> <pre class="prettyprint"> SELECT `id`, `name`, MAX(`score`) AS max , (select count(*) from gg where name = &#039;vasya&#039;) AS cnt FROM `gg` WHERE `name` = &#039;vasya&#039; GROUP BY id order by max desc limit 1 </pre> https://visavi.net/topics/11597/205391 GROUP BY и сортировка Олег Fri, 16 Jul 2010 12:10:33 +0400 Сообщения https://visavi.net/topics/11597/205391 За исключением того что cnt вернет 1 всегда. В данном случае поле cnt обязательно? https://visavi.net/topics/11597/205387 GROUP BY и сортировка Олег Fri, 16 Jul 2010 12:04:58 +0400 Сообщения https://visavi.net/topics/11597/205387 тогда так:<br> <pre class="prettyprint"> SELECT `id`, `name`, count(*) AS cnt, MAX(`score`) AS max FROM `gg` WHERE `name` = &#039;vasya&#039; GROUP BY `name` order by max desc </pre> вроде правильно выводит пока. Там посмотрим. спасибо. https://visavi.net/topics/11597/205386 GROUP BY и сортировка SD Fri, 16 Jul 2010 12:03:26 +0400 Сообщения https://visavi.net/topics/11597/205386 Хотя нет, подсчет вернет 1 https://visavi.net/topics/11597/205385 GROUP BY и сортировка Олег Fri, 16 Jul 2010 12:00:34 +0400 Сообщения https://visavi.net/topics/11597/205385 Тогда так<br> <pre class="prettyprint">SELECT `id`, `name`, count(*) AS cnt, MAX(`score`) AS max FROM `gg` WHERE `name` = &#039;vasya&#039; GROUP BY id order by max desc limit 1</pre> https://visavi.net/topics/11597/205383 GROUP BY и сортировка Олег Fri, 16 Jul 2010 11:59:25 +0400 Сообщения https://visavi.net/topics/11597/205383 15. <strong>Aligan</strong>, если есть алиасы - группировка обязательна. этот запрос не катит. https://visavi.net/topics/11597/205313 GROUP BY и сортировка SD Fri, 16 Jul 2010 10:41:55 +0400 Сообщения https://visavi.net/topics/11597/205313 Одним запросом не получится. Когда агрегаты смешиваются с столбцами, выполнение запроса неоднозначано.<br> Первый запрос можно совершить так<br> <pre class="prettyprint">SELECT `id`, `name`, count(*) AS cnt, MAX(`score`) AS max FROM `gg` WHERE `name` = &#039;vasya&#039; </pre> Ну а далее чтобы получить id, составить второй запрос тебе не проблема https://visavi.net/topics/11597/205263 GROUP BY и сортировка Олег Fri, 16 Jul 2010 05:04:35 +0400 Сообщения https://visavi.net/topics/11597/205263 На поле name добавь индекс, иначе при больших объемов дольше будет выполнятся запрос.<br> И вообще лучше вместо name хранить id пользователя https://visavi.net/topics/11597/205261 GROUP BY и сортировка Олег Fri, 16 Jul 2010 04:35:10 +0400 Сообщения https://visavi.net/topics/11597/205261 дополнение к посту #11: первая запись на выходе - не с максимальным &#039;score&#039;, а та, которая на первом месте в таблице. Т.е. &#039;score&#039; берется с нее. https://visavi.net/topics/11597/205255 GROUP BY и сортировка SD Fri, 16 Jul 2010 03:55:00 +0400 Сообщения https://visavi.net/topics/11597/205255 вот пример таблицы. Из нее, например надо получить результат вида:<br> id - 6<br> cnt - 6<br> name - vasya<br> score - 6<br> <pre class="prettyprint"> CREATE TABLE `gg` ( `id` int(11) NOT NULL auto_increment, `name` varchar(64) NOT NULL, `score` varchar(64) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=7 ; -- -- Дамп данных таблицы `gg` -- INSERT INTO `gg` VALUES (1, &#039;vasya&#039;, &#039;1&#039;); INSERT INTO `gg` VALUES (2, &#039;vasya&#039;, &#039;2&#039;); INSERT INTO `gg` VALUES (3, &#039;vasya&#039;, &#039;3&#039;); INSERT INTO `gg` VALUES (4, &#039;vasya&#039;, &#039;4&#039;); INSERT INTO `gg` VALUES (5, &#039;vasya&#039;, &#039;5&#039;); INSERT INTO `gg` VALUES (6, &#039;vasya&#039;, &#039;6&#039;);</pre> https://visavi.net/topics/11597/205254 GROUP BY и сортировка SD Fri, 16 Jul 2010 03:48:35 +0400 Сообщения https://visavi.net/topics/11597/205254 Нет. Смотри. Мне нужно вывести из таблицы запись с определнным &#039;name&#039;(это поле у каждого юзера свое - записей с одинаковым нейм может быть в таблице несколько), причем одну. Соответственно, когда я группирую по &#039;name&#039; - у меня будет только один результат - хоть с LIMIT 1, хоть без него.<br> И мне нужен именно тот результат, в котором поле &#039;score&#039; - наибольшее. Поэтому и пытаюсь отсортировать по этому полю в порядке убывания. А mysql сортирует в данном случае &quot;от балды&quot;. Т.е. если есть у меня, например, записи со &#039;score&#039; 1, 2, 3, 4, 5, то они при добавлении/удалении записи сортируются явно не по убыванию.<br> Насчет MAX(&#039;score&#039;) - не катит, т.к. максимальное ЭТО поле то он выбирает, а остальные(например `id`) берет вообще не из этой строки, где максимальное score.<br> Как такое организовать?<br> С GROUP BY, как я понял, сортировочка тупит... https://visavi.net/topics/11597/205253 GROUP BY и сортировка SD Fri, 16 Jul 2010 03:43:12 +0400 Сообщения https://visavi.net/topics/11597/205253 Ну тогда в таком случае за разъяснениями к EXPLAIN. <br> name это что-ли ключ к связной таблице? https://visavi.net/topics/11597/205240 GROUP BY и сортировка Олег Fri, 16 Jul 2010 02:56:34 +0400 Сообщения https://visavi.net/topics/11597/205240 я групирую по нейму как по опознавательному идентификатору. ид в данном случае первичный ключ. вопрос исчерпан https://visavi.net/topics/11597/205238 GROUP BY и сортировка SD Fri, 16 Jul 2010 02:51:30 +0400 Сообщения https://visavi.net/topics/11597/205238 Да и группировка неправильная. Следует по id группировать, как я понял это primary https://visavi.net/topics/11597/205234 GROUP BY и сортировка Олег Fri, 16 Jul 2010 02:44:41 +0400 Сообщения https://visavi.net/topics/11597/205234