WHERE yan tümcesi sorun MySQL rastgele girişini seçme

2 Cevap php

Ben bir sözlükten rastgele bir giriş almak için aşağıdaki kodu koşuyorum:

SELECT * FROM tbl_dict WHERE 1 ORDER BY RAND() LIMIT 1

Bu kısa sürede fıkra sorgu başarısız NEREDEN orada genişletmek gibi büyük çalışır, ancak. Ne gerek gibi bir şeydir ...

SELECT * FROM tbl_dict WHERE 1 and lock='0' ORDER BY RAND() LIMIT 1

Ben yanlış nereye gidiyorum herkes bana işaret edebilir? Aklım fıstık ezmesi döndü.

Teşekkür ederiz!

2 Cevap

kilit bir reserved word MySQL içindir. Eğer bir tanımlayıcı olarak kullanmak istiyorsanız ters tırnakların koydum (') veya (ansi modda) çift tırnak var.

You might also be interested in http://jan.kneschke.de/projects/mysql/order-by-rand.
ORDER BY Rand() might or might not be a bit too suboptimal in your case when it comes to speed.

Zihin asla, bu yapmak için çalışıyoruz ne için yanlış.

Eğer masada bir sentetik auto_incremented id sütunu var, değil mi?

eğer öyleyse, o zaman neden olmasın:

  select * from tbl_dict where id 
   = (select floor( rand() * ( max(b.id) + 1) ) from tabl_dict b );