Вы не можете (не должны) помещать неагрегаты в строку SELECT
запроса GROUP BY
.
Однако я хотел бы получить доступ к одному из неагрегатов, связанных с макс. На простом английском я хочу таблицу с самым старым идентификатором каждого вида.
CREATE TABLE stuff (
id int,
kind int,
age int
);
Этот запрос дает мне информацию, которую я ищу:
SELECT kind, MAX(age)
FROM stuff
GROUP BY kind;
Но это не в самой полезной форме. Я действительно хочу, чтобы id
ассоциировался с каждой строкой, чтобы я мог использовать его в последующих запросах.
Я ищу что-то вроде этого:
SELECT id, kind, MAX(age)
FROM stuff
GROUP BY kind;
Это выводит это:
SELECT stuff.*
FROM
stuff,
( SELECT kind, MAX(age)
FROM stuff
GROUP BY kind) maxes
WHERE
stuff.kind = maxes.kind AND
stuff.age = maxes.age
Похоже, должен быть способ получить эту информацию без необходимости присоединения. Мне просто нужен механизм SQL, чтобы помнить другие столбцы, когда он вычисляет максимум.