MySQL - сделать все это одним запросом - PullRequest
0 голосов
/ 09 марта 2012

Я пытаюсь понять, могу ли я выполнить следующую ситуацию в одном запросе:

У меня есть таблица с несколькими столбцами, однако важны только два: version и groupId.Многие строки могут иметь одно и то же значение groupId, столбец версии - это число, которое необходимо отсортировать.

Учитывая два значения groupId, A и B, я хотел бы вернуть две строки в конце.Я хочу найти самый последний номер версии для каждой группы A и B.

Спасибо за вашу помощь.Извините, если это довольно очевидно, но у меня возникли трудности

Ответы [ 3 ]

1 голос
/ 09 марта 2012

Как то так?

SELECT groupId, MAX(version) max_version
FROM YourTable
WHERE groupId IN ('A', 'B')
GROUP BY groupId;

Вы не указали никаких типов данных, поэтому я предположил, что groupId может фактически принимать символьные значения, такие как 'A'. Просто измените это в соответствии с вашими потребностями. Основная идея заключается в том, что вы GROUP BY ваш groupId после фильтрации только тех значений, которые вас интересуют. Затем вы SELECT MAX(version) для каждого из этих значений.

1 голос
/ 09 марта 2012

Попробуйте ниже

  select p.id,p.groupid,p.version from tablename p
    left join 
    (
        select max(id) id1 from tablename
        group by groupId
        order by max(id) desc
    ) t on t.id1 = p.id

Предполагая, что у вас есть идентификатор столбца первичного ключа в таблице

0 голосов
/ 09 марта 2012

Я предполагаю, что версия является целым числом

SELECT MAX(version), `group` FROM table WHERE `group` IN (A, B) GROUP BY `group`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...