sql >> Databasteknik >  >> RDS >> Mysql

Är det möjligt att BEGRÄNSA resultat från en JOIN-fråga?

Den här bör få dina inlägg med de tre senaste kommentarerna per inlägg, förutsatt att dina tabeller ser ut så här:

inlägg :
id , post_text

kommentar :
id , post_id , comment_text

SELECT id, post_text, comment_text
FROM
(
    SELECT p.id, p.post_text, c.comment_text
           CASE
             WHEN @id != p.id THEN @row_num := 1
             ELSE @row_num := @row_num + 1
           END AS rank,
           @id := p.id
    FROM post p
    LEFT JOIN comment c ON ( c.post_id = p.id )
    JOIN ( SELECT @id:=NULL, @row_num:=0 ) x
    ORDER BY p.id,
             c.id DESC -- newest comments first
) y
WHERE rank <= 3;

Underfrågan används för att få de senaste kommentarerna först och för att numrera dem per inlägg, medan den yttre markeringen tar bort äldre kommentarer.



  1. Följ med mig på PAUG Database Designer Conference

  2. Det går inte att visa BLOB-bild med data-URI

  3. MySQL InnoDB textsökningsalternativ

  4. Bör ordningen på LINQ-frågeklausuler påverka Entity Framework-prestanda?