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

ORDER BY RAND() tampaknya kurang dari acak

RAND() hanya dijalankan sekali per kueri. Anda dapat memverifikasi ini dengan melihat kumpulan hasil.

Jika Anda mencoba untuk mendapatkan pesanan acak, Anda harus menggunakan NEWID() atau CHECKSUM(NEWID()) .

WITH T AS ( -- example using RAND()
  SELECT 'Me' Name UNION SELECT 'You' UNION SELECT 'Another'
)
SELECT Name, RAND()
FROM T;

WITH T AS ( -- example using just NEWID()
  SELECT 'Me' Name UNION SELECT 'You' UNION SELECT 'Another'
)
SELECT Name, NEWID()
FROM T;

WITH T AS ( -- example getting the CHECKSUM() of NEWID()
  SELECT 'Me' Name UNION SELECT 'You' UNION SELECT 'Another'
)
SELECT Name, CHECKSUM(NEWID())
FROM T;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara melakukan ping ke MySQL db dan menghubungkan kembali menggunakan PDO

  2. mysql_connect() gagal dengan peringatan kosong

  3. Memasang permata mysql2 di Mac os x Lion

  4. Perubahan dalam konteks sesi database tetap ada dengan penggunaan kembali koneksi gabungan

  5. Formulir Web ASP.NET dan Kerangka Entitas MySql:Transaksi bersarang tidak didukung