Mysql: как сделать join по max и возможно ли это?

Добрый день!
Подскажите, пожалуйста, как можно поправить запрос:
SELECT MAX(doc1.id), MAX(doc1.version), doc2.id
FROM doc1
JOIN doc2 ON doc1.id=doc2.id
WHERE doc2.id is NULL OR doc2.history = ''
GROUP BY doc1.date, doc1.title;

Нужно, чтобы выбранный doc2.id соответствовал MAX(doc1.id).
В каждой группе соответственно MAX(doc1.id) соответствует MAX(doc1.version), тут все получается. Но doc2.id выбирает любой, а нужно тот, который MAX(doc1.id).
Как быть?
  • Вопрос задан
  • 488 просмотров
Решения вопроса 1
@dimoff66
Кратко о себе: Я есть
Сначала сгруппируйте данные, потом соединяйте с doc2. Примерно это будет выглядеть так:

SELECT doc1Groupped.maxId, doc1Groupped.maxVersion, doc2.id 
FROM (
  SELECT MAX(doc1.id) as maxId, MAX(doc1.version) as maxVersion
  FROM doc1
  GROUP BY doc1.date, doc1.title
) as doc1Groupped
JOIN doc2 ON doc1Groupped.maxId = doc2.id
WHERE doc2.id is NULL OR doc2.history = ''
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы