SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 07.03.2008 10:08:11

WebSee
Участник
Зарегистрирован: 03.02.2008
Сообщений: 4

Проблемы с сортировкой в MySQL5

Есть ряд запросов наподобии:
SELECT sc.id, sc.menuindex FROM
`site_content` sc LEFT JOIN
`document_groups` dg on dg.`document` = sc.`id` WHERE
sc.`published`=1 AND sc.`deleted`=0 AND (sc.`privateweb`=0) GROUP BY sc.`id`
ORDER BY sc.`menuindex` DESC

которые не сортируютя в MySQL 5.
Как видно запрос соответствует синтаксису MySQL.
Но результат возвращается абсолютно не отсортированным.
Хотя простой запрос без JOIN сортируется правильно.

Сталкивался кто-нибудь с такой проблемой?

Неактивен

 

#2 07.03.2008 10:40:50

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Проблемы с сортировкой в MySQL5

Не вполне соответствует синтаксису. Например, если Вы установите  set @@sql_mode='ONLY_FULL_GROUP_BY'; то Ваш запрос будет приводить к ошибке.

GROUP BY делает группировку по определенным полям (и неявную сортировку). Если Вы указали в SELECT поля, по которым не производится группировка без агрегирующих функций (MAX, SUM, AVG, GROUP_CONCAT, ...), то MySQL выберет произвольного представителя группы, что имеет довольно мало смысла - запрос непредсказуем.

Если хотите все же бороться, делайте сортировку в подзапросе
SELECT * FROM ( Ваш запрос) ORDER BY ...;


Обсуждение GROUP BY и стандарта есть в статье:
http://dev.mysql.com/tech-resources/art … myths.html

Неактивен

 

#3 07.03.2008 11:22:42

WebSee
Участник
Зарегистрирован: 03.02.2008
Сообщений: 4

Re: Проблемы с сортировкой в MySQL5

Да, действительно проблема в GROUP BY, без него сортируется правильно..

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson