sql >> Database >  >> RDS >> Mysql

Is het mogelijk om resultaten van een JOIN-query te BEPERKEN?

Deze zou je berichten moeten krijgen met de drie meest recente reacties per bericht, ervan uitgaande dat je tabellen er zo uitzien:

post :
id , post_text

commentaar :
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;

De subquery wordt gebruikt om eerst recente opmerkingen te krijgen en ze per bericht te nummeren, terwijl de buitenste selectie oudere opmerkingen verwijdert.



  1. MySql draagbare versie

  2. Teruggegeven record beperken van SQL-query in Oracle

  3. MySQL-volgsysteem

  4. Verbinding maken met SQL Server met Windows-verificatie