यदि आपको कोई आपत्ति नहीं है तो कुछ तालिका डेटा संसाधित नहीं किया जा सकता (तालिका आकार पर निर्भर करता है, उम्मीद है कि 50% पंक्ति संसाधित नहीं की जा सकती), यहां एक समाधान है:
मूल तालिका
id name
1 Some
2 Body
3 Once
4 Told
5 Me
6 The
7 World
8 Is
9 Gonna
10 Roll
11 Me
12 I
13 Ain't
14 The
15 Shapest
16 Tool
17 In
18 The
19 Shed
20 She
21 was
22 looking
23 kind
24 of
25 dumb
26 with
27 her
28 finger
29 and
30 her
31 thumb
क्वेरी:
SELECT new_id, name FROM (
SELECT new_id, name FROM (
SELECT new_meme.id as new_id, original_meme.id as original_id, original_meme.name FROM meme original_meme
JOIN meme new_meme ON new_meme.id <> original_meme.id
ORDER BY RAND()
) layer1
GROUP BY layer1.new_id
) layer2 GROUP BY name
परिणाम (पाठ्यक्रम में हर बार अलग-अलग)
1 I
2 In
3 Gonna
4 Ain't
5 The
6 her
7 finger
8 Some
9 dumb
10 She
15 Me
16 with
17 Told
18 and
19 World
21 Roll
22 The
25 Tool
26 Shed
27 Is
28 Me
29 Sharpest
31 The
नोट:आपको क्वेरी बहुत धीमी मिल सकती है , ऐसा इसलिए है क्योंकि यह तालिका में दो बार शामिल होता है , इसलिए यदि डेटा का आकार 1000 है, तो उसे 1000 * 1000 संसाधित करने की आवश्यकता होगी।
आप ON new_meme.id <> original_meme.id
का उपयोग करके क्वेरी की गति को नियंत्रित कर सकते हैं करने के लिए (5 को बदला जा सकता है), लेकिन यह यादृच्छिकता को कम करेगा और गैर-संख्यात्मक आईडी के लिए काम नहीं करेगा