Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

बयान में के साथ मैसकल सीमा

आप प्रत्येक श्रेणी के लिए रैंक देने के लिए एक रैंक क्वेरी का उपयोग कर सकते हैं और इसे नीचे दिए गए प्रति श्रेणी के अपने वांछित रिकॉर्ड के साथ फ़िल्टर कर सकते हैं, क्वेरी आपको प्रत्येक श्रेणी से 6 रिकॉर्ड देगी

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एकाधिक तालिकाओं के बीच SQL कई-से-अनेक संबंध

  2. mysql:बहुत ही सरल चयन आईडी ORDER BY LIMIT अपेक्षित रूप से INDEX का उपयोग नहीं करेगा (?!)

  3. सिद्धांत 2 एसयूएम () समकक्ष सहायक?

  4. एक अक्षांश के करीब बहुभुज प्राप्त करें, MySQL में लंबा

  5. Yii . में संबंधित मॉडल की संपत्ति की पुष्टि करें