Bagaimana untuk Menjana Nilai Rawak Dalam Julat dalam MySQL?

Susan Sarandon
Lepaskan: 2024-10-26 06:56:30
asal
164 orang telah melayarinya

How to Generate Random Values Within a Range in MySQL?

Mendapatkan Nilai Rawak Dalam Julat dalam MySQL

Pengenalan

Apabila bekerja dengan MySQL, mungkin terdapat keadaan di mana anda perlu menjana rawak nilai yang berada dalam julat yang ditentukan. Walaupun fungsi RAND() wujud, ia tidak memenuhi keperluan ini. Artikel ini membincangkan pendekatan terbaik untuk mencapai ini dalam MySQL.

Penyelesaian:

Kaedah optimum dalam MySQL untuk menjana nilai rawak dalam julat yang ditentukan ialah:

ROUND((RAND() * (max-min))+min)
Salin selepas log masuk
  • RAND(): Menjana nombor rawak antara 0 dan 1.
  • maks: Nilai maksimum julat yang diingini.
  • min: Nilai minimum julat yang diingini.

Formula ini mendarab RAND() dengan perbezaan antara maks dan min, menambahkan min pada hasil. ROUND() digunakan untuk mendapatkan nilai integer.

Perbandingan dengan Pelaksanaan PHP:

Persamaan PHP bagi penyelesaian MySQL ialah:

<code class="php">rand($min, $max)</code>
Salin selepas log masuk

Walau bagaimanapun, penanda aras mempunyai menunjukkan bahawa penyelesaian MySQL sedikit lebih pantas apabila berurusan dengan sejumlah besar nilai. Pilihan antara PHP dan MySQL bergantung pada bilangan baris yang sedang diproses dan sama ada hanya nilai rawak diperlukan atau lajur tambahan akan dikembalikan.

Contoh Pertanyaan

Untuk mendapatkan nilai rawak antara 10 dan 200:

<code class="mysql">SELECT ROUND((RAND() * (200-10))+10) AS `foo`</code>
Salin selepas log masuk

Tambahan: Perbandingan Prestasi

Untuk menggambarkan lagi perbezaan prestasi, skrip PHP berikut telah dijalankan:

<code class="php">// MySQL
$start = microtime(1);
for( $i = 0; $i < 100000; $i++ )
{
    $r = mysql_query( 'SELECT ROUND(RAND() * (200-10) + 10) FROM dual' );
    $r = mysql_fetch_array( $r );
}
$end = microtime(1);

// PHP
$start = microtime(1);
for( $i = 0; $i < 100000; $i++ )
{
    $r = mysql_query( 'SELECT 200 AS two, 10 AS tem FROM dual' );
    $r = mysql_fetch_array( $r );
    $r[2]= rand($r[0], $r[1]);
}
$end = microtime(1);</code>
Salin selepas log masuk

Hasilnya menunjukkan bahawa MySQL adalah lebih pantas untuk menjana nilai rawak jika hanya nilai rawak diperlukan, tetapi lebih perlahan jika lajur tambahan dikembalikan.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Nilai Rawak Dalam Julat dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!