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

Kesalahan sintaks dengan fungsi Rand() di MySQL di Delphi

Pertama, Anda tidak menggunakan RAND() benar. Ini mengembalikan angka desimal 0 <= N < 1 . Nilai input adalah benih, bukan batas atas seperti yang Anda harapkan. Untuk mendapatkan bilangan bulat acak antara 0 <= N < Count , Anda harus mengalikan hasilnya, yaitu RAND()*Count , yang tidak Anda lakukan. Tapi Anda tidak perlu melakukannya, Anda bisa menggunakan RAND() dengan sendirinya, tidak perlu menanyakan jumlah record terlebih dahulu:

qryCards.SQL.Text := 'SELECT * FROM tblCards WHERE Card_Rarity = "Epic" ORDER BY RAND() LIMIT 1';
qryCards.Open;
ShowMessage(qryCards.FieldByName('Card_Name').AsString);

Jika tidak, Anda dapat memilih catatan acak dengan menentukan offset ke LIMIT klausa, misalnya:

qryCards.SQL.Text := 'SELECT * FROM tblCards WHERE Card_Rarity = "Epic"';
qryCards.Open;
iCount := qryCards.RecordCount;
qryCards.Close;
qryCards.SQL.Text := 'SELECT * FROM tblCards WHERE Card_Rarity = "Epic" LIMIT ' + IntToStr(Random(iCount)) + ', 1');
qryCards.Open;
ShowMessage(qryCards.FieldByName('Card_Name').AsString);

Jika tabel Anda memiliki bidang id kenaikan otomatis tanpa celah di dalamnya, ada teknik lain yang dapat Anda gunakan RAND() dengan. Lihat MySQL Select Random Records sebagai contoh.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP &MySQL :Tampilkan SUM Sesuatu, Diklasifikasikan Berdasarkan Kategori Berbeda

  2. PHP MySQL PDO TextArea Where klausa dengan pemeriksaan kondisi

  3. Django:Permintaan mysql tanpa buffer

  4. Prosedur tersimpan MYSQL, kasus

  5. apakah ini praktik yang baik untuk menggunakan mysql_free_result($result)?