आप एक रैंक क्वेरी का उपयोग कर सकते हैं mysql में इस प्रकार के परिणामों के लिए प्रति समूह n रिकॉर्ड प्राप्त करने के लिए विंडो फ़ंक्शन नहीं हैं, मैं group_concat
का सुझाव नहीं दूंगा समाधान क्योंकि articles
. के रूप में शर्तें कहती हैं कि पर्याप्त डेटा हो सकता है और आसानी से 1024 वर्ण सीमा बाधा को पार कर सकते हैं यदि आप इस सीमा को बढ़ाते हैं तो यह max_allowed_packet
भी
SELECT * FROM (
SELECT *,
@r:= CASE WHEN @g = c.id THEN @r +1 ELSE 1 END rownum,
@g:= c.id catgroup
FROM category c
JOIN articles a ON (c.id = a,category_id)
CROSS JOIN (SELECT @g:=0,@r:=0) t2
ORDER BY c.id , a.`date` desc
) t
WHERE rownum <= 5
ऊपर प्रत्येक लेख को उसके श्रेणी समूह में रैंक करेगा आप rownum
. का परिणाम देख सकते हैं उपनाम और बाहरी क्वेरी में केवल लेखों के परिणामों को 5 प्रति श्रेणी समूह में फ़िल्टर करें