Mam tabelę (w przybliżeniu):
- comment_id
- comment_item
- comment_date
Chciałbym wyciągnąć ostatnich 10 rekordów sortując po comment_date DESC, ale żeby comment_item się nie powtórzyło. Niestety, GROUP BY comment_item psuje całe sortowanie (bierze pierwszą napotkaną datę).
Wymyśliłem takie coś, ale nie jestem pewien złożoności obliczeniowej, która jest pewnie ogromna:
SELECT c.*, (SELECT d.comment_date FROM cms_comments AS d WHERE d.comment_item = c.comment_item ORDER BY d.comment_date DESC LIMIT 0,1)AS comment_date_last FROM cms_comments AS c GROUP BY c.comment_item ORDER BY comment_date_last DESC LIMIT 0, 10
Katuję bazę danych? SELECT DISTINCT rozwiązałby mój problem? Jakbym musiał wówczas ułożyć optymalne zapytanie?
Ponoć DISTINCT wydajniejsze od ewentualnego GROUP BY
Cytat
When combining LIMIT row_count with DISTINCT, MySQL stops as soon as it finds row_count unique rows.
Z góry dzięki za odpowiedzi,
Athlan.