Это была горячая проблема в реляционной базе данных с тегом greatest-n-per-group
, обратитесь к этому: найти наибольшее значение для каждой группы
Но теперь есть более сложный сценарий:
| id | year | rev | content |
| --: | ---: | --: | -------------: |
| 1 | 2019 | 1 | content2019_11 |
| 1 | 2019 | 2 | content2019_12 |
| 1 | 2019 | 3 | content2019_13 |
| 1 | 2020 | 1 | content2020_11 |
| 1 | 2020 | 2 | content2020_12 |
| 1 | 2020 | 5 | content2020_15 |
| 2 | 2019 | 1 | content2019_21 |
| 2 | 2019 | 2 | content2019_22 |
| 2 | 2020 | 1 | content2020_21 |
| 2 | 2020 | 4 | content2020_24 |
Ожидаем результата:
| id | year | rev | content |
| --: | ---: | --: | -------------: |
| 1 | 2020 | 5 | content2020_15 |
| 2 | 2020 | 4 | content2020_24 |
Это означает, что сначала необходимо сгруппировать по, чтобы получить максимальную ревизию, затем сгруппировать по, чтобы получить максимальный год, а затем снова присоединиться к результату поиска в получить другие поля. Это сложно в одном запросе. Похоже, мне нужно создать временные представления.
Есть идеи по этому поводу? Большое спасибо.
вот sqlfiddle со схемой, которую вы можете попробовать