Попробуйте этот запрос, он ранжирует записи в группе, а затем использует ранг для фильтрации результатов -
SELECT col1, col2, col3 FROM (
SELECT e1.*, COUNT(*) p FROM entries e1
LEFT JOIN entries e2
ON e1.col2 = e2.col2 AND e1.col3 <= e2.col3
GROUP BY e1.col2, e1.col3
) t
WHERE p < 3
+-------+--------+-------+
| col1 | col2 | col3 |
+-------+--------+-------+
| ITEM5 | CLASS1 | DATE2 |
| ITEM3 | CLASS1 | DATE3 |
| ITEM7 | CLASS2 | DATE3 |
| ITEM4 | CLASS2 | DATE4 |
| ITEM2 | CLASS3 | DATE2 |
| ITEM6 | CLASS3 | DATE6 |
+-------+--------+-------+