Я явно недопонимаю что-то здесь с GROUP BY MySQL, поскольку это меняет порядок моих результатов.
Используя этот пример данных SQL:
CREATE TABLE IF NOT EXISTS `example_table` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`GROUP_NAME` text NOT NULL,
`ORDER_COLUMN` int(11) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
INSERT INTO `example_table` (`ID`, `GROUP_NAME`, `ORDER_COLUMN`) VALUES
(NULL, '271007K240.003:10', 70),
(NULL, '271007K240.003:10', 90),
(NULL, '271007K240.003:10', 100),
(NULL, '271007K240.003:10', 50),
(NULL, '271007K240.003:10', 80),
(NULL, '271007K240.003:10', 60);
Теперь я создал эти данные в качестве примера, чтобы в столбце GROUP_NAME было много разных значений, но для разряда я только что включил то, что демонстрирует проблему.
Выполнение этого очень простого запроса возвращает самое высокое значение ORDER_COLUMN (ID: 3) вверху, как и ожидалось:
SELECT
*
FROM
`example_table`
ORDER BY
ORDER_COLUMN
DESC
Однако я действительно хочу сгруппировать по столбцу, который я назвал здесь GROUP_NAME , учитывая это, я собирался сделать что-то вроде этого:
SELECT
*
FROM
`example_table`
GROUP BY
GROUP_NAME
ORDER BY
ORDER_COLUMN
DESC
Теперь, делая это, просто возвращаем первую строку и игнорируем ORDER BY.
Затем я подумал, что для достижения того, что мне нужно, мне нужно будет использовать подзапрос с предварительно отсортированными данными, а затем с помощью группировки можно просто сгруппировать набор данных подзапросов следующим образом:
SELECT
*
FROM
(
SELECT
*
FROM
`example_table`
ORDER BY
ORDER_COLUMN
DESC
) AS TEMP_TABLE
GROUP BY GROUP_NAME
К сожалению, это возвращает только первый ряд таблицы. Что я тут не так делаю?