У меня есть таблица, которая выглядит следующим образом:
id | title | value | language
---+-------+-------+---------
1 | a | 1800 | NULL
2 | a | 1900 | NULL
3 | b | 1700 | NULL
4 | b | 1750 | NULL
5 | b | 1790 | 1
6 | c | 1892 | NULL
7 | c | 1900 | 1
8 | c | 1910 | 2
9 | d | 3020 | NULL
Хотелось бы получить следующий результат:
id | title | value | language
---+-------+-------+---------
2 | a | 1900 | NULL
4 | b | 1750 | NULL
5 | b | 1790 | 1
6 | c | 1892 | NULL
7 | c | 1900 | 1
8 | c | 1910 | 2
9 | d | 3020 | NULL
Смысл в том, чтобы выбрать наибольшее значение в столбце значений для каждого языка каждого заголовка, причем самое большое - самое последнее. Во-вторых, я хотел бы избежать использования агрегатных функций, таких как MAX, DISTINCT или GROUP-BY, поскольку я строю MySQL View с использованием алгоритма MERGE и не хочу в конечном итоге создавать временную таблицу (см. Нижний раздел https://dev.mysql.com/doc/refman/5.6/en/view-algorithms.html).
Пока это работает, но возвращает только наибольшую строку для заголовка:
SELECT t1.title
FROM table t1
LEFT OUTER JOIN table t2
ON t1.title = t2.title
AND t1.value < t2.value
WHERE t2.title IS NULL
Как я могу создать тот, который принимает во внимание язык как результаты выше? Thanx.