Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara mengacak kolom di MySql

Jika Anda tidak keberatan beberapa data tabel tidak dapat diproses (tergantung pada ukuran tabel, berharap 50% baris tidak dapat diproses), inilah solusinya:

Tabel Asli

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

Kueri:

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

Hasil (tentu saja berbeda setiap kali dijalankan)

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

Catatan:Anda mungkin menemukan kueri sangat lambat , ini karena ini bergabung dengan tabel dua kali , jadi jika ukuran data 1000, maka perlu memproses 1000 * 1000.

Anda dapat mengontrol kecepatan kueri dengan mengubah ON new_meme.id <> original_meme.id ke ON new_meme.id BETWEEN original_meme.id - 5 AND original_meme.id +5 (5 dapat diubah), tetapi akan mengurangi keacakan dan tidak berfungsi untuk id non-numerik



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengonversi nilai negatif dari FROM_UNIXTIME

  2. Cara Transpose Baris ke Kolom Secara Dinamis di MySQL

  3. desain database untuk kuis dengan bahasa yang berbeda

  4. Konversi javascript ke objek tanggal ke format tanggal mysql (YYYY-MM-DD)

  5. Bagaimana Cara Menginstal MySQL di Windows 10? – Solusi Satu Atap Anda Untuk Menginstal MySQL