Mysql
 sql >> база данни >  >> RDS >> Mysql

Възможно ли е да ОГРАНИЧИТЕ резултатите от JOIN заявка?

Това трябва да получава вашите публикации с трите най-скорошни коментара на публикация, ако приемем, че вашите таблици изглеждат така:

пост :
id , post_text

коментар :
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;

Подзаявката се използва, за да получите първо последните коментари и да ги номерирате за публикация, докато външният избор премахва по-старите коментари.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Посоченият ключ за MySQL беше твърде дълъг

  2. Групиране на таблици в MySQL база данни

  3. Как да предотвратите автоматизирани AJAX атаки

  4. Неправилна стойност на низа:'\xF0\x9F\x8E\xB6\xF0\x9F...' MySQL

  5. Как да изберете уникални посетители за интервал от време?