Используйте ORDER BY с запросом, который уже имеет GROUP BY - PullRequest
3 голосов
/ 12 августа 2011

Я использую MySQL, и у меня есть таблица с датами в столбце (я делаю таблицу сроков для класса).Ранее у меня был следующий запрос:

SELECT * FROM duedates_f2011 ORDER BY anothercolumn

Чтобы предотвратить повторяющиеся вхождения (на основе столбца duedate), мне пришлось изменить его следующим образом:

SELECT * FROM duedates_f2011 GROUP BY duedate

В настоящее времясохранил тот же порядок, но как я могу гарантировать, что он все еще будет делать это?Ничто в прочитанных мною руководствах GROUP BY не указывает на то, что оно все равно будет отсортировано, а добавление оператора ORDER BY после этого некорректно.Есть ли что-то, что я пропускаю, или я должен добавить что-то еще, чтобы убедиться, что он остается в порядке?

(как указано в моих тегах, я использую PHP для выполнения запроса)

Ответы [ 3 ]

1 голос
/ 12 августа 2011

Как насчет выбора с группировкой, а затем делать заказ позже, как это?

SELECT * FROM
   (SELECT * FROM duedates_f2011 GROUP BY duedate) a
ORDER BY anothercolumn

Не вижу смысла для вас останавливаться на том, что вы заказываете сгруппированный столбец. Будьте жирным шрифтом ! Требовать больше вашей базы данных! Он должен преклоняться перед каждым твоим капризом!

mysql> SELECT Jump FROM YourDatabase;
+----------------+ 
| Jump           |
+----------------+
| How high?      |
+----------------+
1 row in set (0.00 sec)
1 голос
/ 12 августа 2011
SELECT * FROM duedates_f2011 GROUP BY duedate ORDER BY anothercolumn;

Это соответствует страницам управления MySQL .

0 голосов
/ 12 августа 2011

Вы можете использовать group by ... order by ... (в этом порядке). Если вы используете только group by, он будет автоматически упорядочен по этим столбцам.

Однако, если вы хотите group by duedate и order by anothercolumn, осознайте одно: sql не знает, какое значение взять для другого столбца, когда вы группируете по duedate ...

edit : из руководства mysql

Если вы используете GROUP BY, выходные строки сортируются в соответствии с GROUP BY столбцы, как если бы вы имели ORDER BY для тех же столбцов.

...