У меня есть таблица вроде этого:Как выбрать максимальное значение на второй первичного ключа
id | version | name
1 1 name1 v1
1 2 name1 v2
1 3 name1 v3
1 4 name1 v4
2 1 name2 v1
2 2 name2 v2
2 3 name2 v3
Я пытаюсь получить максимальную версию каждого идентификатора на столе с этим запросом:
SELECT a.id, MAX(a.version) AS version, b.name
FROM table1 a
INNER JOIN (
SELECT * FROM table1
) b
ON a.id = b.id AND a.version = b.version
GROUP BY a.id
Но я получаю эти результаты вместо:
id | version | name
1 4 name1 v1
2 3 name2 v1
Когда я должен получить это:
id | version | name
1 4 name1 v4
2 3 name2 v3
Любая помощь будет высоко оценена, спасибо заранее
EDIT:
Я просто понял, что добавление макс (b.name) в операторе отбора делает трюк хехе
Во всяком случае, благодаря @bluefeet, @ user2001117, @rs. и @Bram Gerritsen. Все ваши запросы работают как шарм =)
Что произойдет, если вы добавляете b.name в оператор GROUP BY? – Melanie
Также возможно попробовать ON a.id = b.id AND MAX (a.version) = b.version. Не знаю, является ли это законным синтаксисом, но .... – Melanie