sql >> Database teknologi >  >> RDS >> Mysql

Sådan blander du en kolonne i MySql

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



  1. Funktionen MySQL LEAST() – Find det mindste argument i en liste over argumenter

  2. Split funktion tilsvarende i T-SQL?

  3. Vælg et indlæg, der ikke har et bestemt tag

  4. Fillagring til webapplikationer:Filsystem vs DB vs NoSQL-motorer