sql >> Databáze >  >> RDS >> Mysql

Je možné LIMIT výsledky z dotazu JOIN?

Tento by měl obsahovat vaše příspěvky se třemi nejnovějšími komentáři ke každému příspěvku, za předpokladu, že vaše tabulky vypadají takto:

příspěvek :
id , post_text

komentář :
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;

Dílčí dotaz se používá k získání nedávných komentářů jako prvních a k jejich očíslování v příspěvku, zatímco vnější výběr odstraňuje starší komentáře.



  1. Jak urychlit vzorec Haversine v mysql?

  2. Vrácení více hodnot SERIAL z dávkové přílohy Posgtres

  3. MySQL vs PostgreSQL pro webové aplikace

  4. Implementace Switchover/Switchback v PostgreSQL 9.3.