Hvis du ikke har noget imod det, kan nogle af tabeldataene ikke behandles (afhænger af tabellens størrelse, forventer, at 50 % række ikke kan behandles), her er en løsning:
Original tabel
id navn1 Some2 Body3 Once4 Told5 Me6 The7 World8 Is9 Gonna10 Roll11 Me12 I 13 Ain't14 The 15 Shapest16 Tool17 In18 The19 Shed20 She21 was22 looking23 kind24 of25 dumb26 with27 her28 finger29 andthumb her
Forespørgsel:
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 BESTILLING) BY RAND() ) layer1 GROUP BY layer1.new_id) layer2 GROUP BY name
Resultat (forskelligt hver gang selvfølgelig)
1 I 2 In3 Gonna4 Ain't5 The6 her7 finger8 Some9 dumb10 She15 Me16 with17 Told18 and19 World21 Roll22 The 25 Tool26 Shed27 Is28 Me29 Sharpest31 The
Bemærk:Du finder muligvis forespørgslen meget langsom , det skyldes, at den slutter sig til bordet to gange , så hvis datastørrelsen er 1000, skal den behandle 1000 * 1000.
Du kan kontrollere hastigheden af forespørgslen ved at ændre ON new_meme.id <> original_meme.id
til PÅ new_meme.id MELLEM original_meme.id - 5 OG original_meme.id +5
(de 5 kan ændres), men det vil mindske tilfældighed og virkede ikke for ikke-numberisk id