Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Sortieren nach innerhalb der Gruppe nach in Lehre 2

Am Ende habe ich es mit einer korrelierten Unterabfrage gelöst:

$qb
    ->select('a')
    ->from('Article', 'a')
    ->join('a.views', 'v')
    ->orderBy('v.viewDate', 'DESC')
    ->setMaxResults(20)

    // Only select the most recent article view for each individual article
    ->where('v.viewDate = (SELECT MAX(v2.viewDate) FROM ArticleView v2 WHERE v2.article = a)')

Auf diese Weise ignoriert die Sortierung andere Artikelansichten als die neuesten für einen bestimmten Artikel. Obwohl ich vermute, dass dies im Vergleich zu den anderen rohen SQL-Lösungen ziemlich schlecht abschneidet, würden Antworten mit besserer Leistung immer noch sehr geschätzt :).