[]
MySQL Sorusu - 2 (random'ı adam etmek)
nasıl aratacağımı bile bilmediğim için çözemedim. en azından keyword verirseniz o da işimi görür.
order by RAND() limit 4 diyip listeden rastgele değerler seçtiriyorum. (veritabanından seçtiği değerler 1 ile 99 arasında integer alan kolonlar)
burada şunu yapmak istiyorum: bu dört tane seçim arasında aşağıdaki aralıklarda 2den fazla değer olmasın:
1-9 = en fazla 2 tanesi bu aralıktan gelebilir
10-19 = en fazla 2 tanesi bu aralıktan gelebilir
20-29 = en fazla 2 tanesi bu aralıktan gelebilir.
bu random'ı bu şekilde böldürebiliyor muyum?
order by RAND() limit 4 diyip listeden rastgele değerler seçtiriyorum. (veritabanından seçtiği değerler 1 ile 99 arasında integer alan kolonlar)
burada şunu yapmak istiyorum: bu dört tane seçim arasında aşağıdaki aralıklarda 2den fazla değer olmasın:
1-9 = en fazla 2 tanesi bu aralıktan gelebilir
10-19 = en fazla 2 tanesi bu aralıktan gelebilir
20-29 = en fazla 2 tanesi bu aralıktan gelebilir.
bu random'ı bu şekilde böldürebiliyor muyum?
hangi dili kullanıyorsunuz?
- işimdeyim gücümdeyim (16.08.18 11:00:00)
şu mantık karmaşık ama istediğin olur:
select * from
(select * from table where col1>= 1 and col1 <10 order by RAND() limit rand()*3
union all
select * from table where col1>= 10 and col1 <20 order by RAND() limit rand()*3
union all
select * from table where col1>= 20 and col1 <30 order by RAND() limit rand()*3
union all
select * from table where col1>= 30 order by RAND()
) x limit 4
mysql için systax doğru olmayabilir, limitlerdeki rand'leri integer'a çevirmek gerekebilir.
select * from
(select * from table where col1>= 1 and col1 <10 order by RAND() limit rand()*3
union all
select * from table where col1>= 10 and col1 <20 order by RAND() limit rand()*3
union all
select * from table where col1>= 20 and col1 <30 order by RAND() limit rand()*3
union all
select * from table where col1>= 30 order by RAND()
) x limit 4
mysql için systax doğru olmayabilir, limitlerdeki rand'leri integer'a çevirmek gerekebilir.
- altinci nesil caylak (16.08.18 11:50:44 ~ 11:51:32)
1