У меня есть такая таблица:
post | date | tags
--------+-----------+-------
post3 | 2016 | bbb
post1 | 2018 | aaa
post2 | 2017 | ccc
post1 | 2018 | bbb
post3 | 2016 | aaa
post2 | 2017 | bbb
post2 | 2017 | bbb
post1 | 2018 | ccc
post3 | 2016 | ccc
И я хочу получить следующий результат:
post | date | tags
------- +---------- +--------
post1 | 2018 | aaa
post2 | 2017 | bbb
post3 | 2016 | ccc
Другими словами, я хочу сделать следующее: во-первых, упорядочить таблицу на основе столбца (который в данном случае является столбцом даты). И, во-вторых, группировать по другому столбцу (который в данном случае является тегом столбца). И я хочу, наконец, чтобы результат колонки записей не повторялся.
Первую и вторую часть я умею делать. Я применяю запрос ниже ...
SELECT post, `date`, tag
FROM tabela AS t1
WHERE t1.`date` = (
SELECT MAX(t2.`date`)
FROM tabela AS t2
WHERE t1.tag = t2.tag
)
... и я получаю следующий результат:
post | data | tags
------- +---------- +--------
post1 | 2018 | aaa
post1 | 2018 | bbb
post1 | 2018 | ccc
Проблема, как видите, в том, что post1 повторяется для всех тегов. И я не хочу, чтобы это произошло. Я хочу, чтобы все строки были заполнены разумно на основе наибольшего значения, указанного в столбце даты, но без повторения в столбце записи.
Как я могу это сделать?
PS: извините за английские ошибки, я не американец.