sql >> Databasteknik >  >> RDS >> Mysql

Mysql limit med in statement

Du kan använda en rankningsfråga för att ge en rankning för varje kategori och filtrera den med önskat antal poster per kategori nedanför frågan ger dig 6 poster från varje kategori

SELECT t.* FROM
(SELECT 
  `user_bookmarks`.`id` AS `user_bookmark_id`,
  `bookmark_id`,
  `user_bookmarks`.`user_id`,
  `bookmark_url`,
  `bookmark_website`,
  `bookmark_title`,
  `bookmark_preview_image`,
  `bookmark_popularity`,
  `category_id`,
  `category_name`,
  `pdf_txt_flag`,
  `youtube_video`,
  `content_preview`,
  `snapshot_preview_image`,
  `mode` ,
   @r:= CASE WHEN category_id = @g THEN @r+1  ELSE @r:=1 END `rank` ,
   @g:=category_id
FROM
  `user_bookmarks` 
  LEFT JOIN `bookmarks` 
    ON `user_bookmarks`.`bookmark_id` = `bookmarks`.`id` 
  LEFT JOIN `categories` 
    ON `user_bookmarks`.`category_id` = `categories`.`id` 
  JOIN (SELECT @r:=0,@g:=0) t1
WHERE `category_id` IN (164, 170, 172) 
ORDER BY category_id
) t
WHERE t.rank <=6


  1. Strategier för att hantera ständigt föränderliga krav på MySQL-scheman?

  2. SQL INSERT INTO-sats

  3. Det effektivaste sättet att infoga rader i MySQL-databasen

  4. Introduktion till PostgreSQL