SQL dili ile MySQL’dan Oracle veritabanına kadar, rastgele bir satırı nasıl seçeceğimizi öğreneceğiz
5 farklı veritabanından rastgele satır çekmek için SQL örnekleri aşağıdaki gibi arkadaşlar.
SELECT column FROM table ORDER BY RAND() LIMIT 1
SELECT column FROM table ORDER BY RANDOM() LIMIT 1
SELECT TOP 1 column FROM table ORDER BY NEWID()
SELECT column, RAND() as IDX FROM table ORDER BY IDX FETCH FIRST 1 ROWS ONLY
SELECT column FROM ( SELECT column FROM table ORDER BY dbms_random.value ) WHERE rownum = 1
Makale kaynağı: SQL to Select a random row from a database table
Bu yazı 18 Haziran 2008, 20:22 tarihinde yazılmış olup bu zamana kadar 776 kez görüntülenmiştir
Bu yazı 2 adet yorum almıştır ve bunların tamamı görüntülenmektedir.
SELECT COLUMN FROM TABLE
ORDER BY RAND()
LIMIT 1
Sorgusundaki gibi rand() kullanmak mysql’a zülüm etmekten başka bişey değil bence anlık 20 30 online’de Mysql sunucusunu çok fazla kasıyor özellikle share hostlarda hemen fark ediliyorsunuz.
$say=mysql_query("SELECT COUNT( COLOM_ADİ ) as toplam FROM tablo");
$al=mysql_result($say,0,’toplam’); // Kaç adet veri olduğunu sayıyoruz
$kac=rand(0,$al); // Rasgele bir sayı alıyoruz veri sayısını aşmayacak şekilde
SELECT COLOM_ADİ FROM tablo limit $kac,1
Yukarıda yazdıklarım bir kaç sorgu daha fazla gibi görünsede mysql sunucusunu daha az kasar ve daha hızlıdır bizzat test edilmiştir.
Sanırım er ya da geç bu ihtiyaç doğuyor ve aramalar sonucu aynı sonuca ulaşılıyor.
ben de şurada yazmıştım.
Tabii bu rastgele satır seçme işlemi her ne kadar güzel bir numara olsa da indeks olmayan bir kolona göre sıralama yaptırdığınızdan içinde çok fazla kayıt bulunduran tablolarda işlem çok uzun sürebiliyor ve fazla işlemci gücü tüketebiliyor. Yazımda PHP için bu konu ile ilgili alternatif bir yöntemden bahsetmiştim. Bir bakmanı tavsiye ederim.
Yazını çok beğendim. Yeni yazılarının e-posta adresime gelmesini istiyorum :)