यह क्वेरी श्रेणियों में शामिल सभी आइटम यादृच्छिक क्रम में लौटाती है:
SELECT
c.id AS cid, c.category, i.id AS iid, i.name
FROM categories c
INNER JOIN items i ON c.id = i.category
ORDER BY RAND()
प्रत्येक श्रेणी को एक तक सीमित करने के लिए, क्वेरी को आंशिक . में लपेटें GROUP BY
:
SELECT * FROM (
SELECT
c.id AS cid, c.category, i.id AS iid, i.name
FROM categories c
INNER JOIN items i ON c.id = i.category
ORDER BY RAND()
) AS shuffled_items
GROUP BY cid
ध्यान दें कि जब किसी क्वेरी में GROUP BY
both दोनों हों और ORDER BY
खंड, समूहीकरण छँटाई से पहले किया जाता है। यही कारण है कि मैंने दो प्रश्नों का उपयोग किया है:पहला परिणामों को क्रमबद्ध करता है, दूसरा परिणामों को समूहीकृत करता है।
मैं समझता हूं कि यह प्रश्न किसी भी दौड़ को जीतने वाला नहीं है। मैं सुझावों के लिए तैयार हूं।