Mysql
 sql >> база данни >  >> RDS >> Mysql

Проблем при избора на един произволен ред от таблицата на MySQL

Вашият код връща няколко реда, защото rand() се оценява на всеки ред. И така, имате промяна на множество съвпадения. И шанс изобщо да няма съвпадения.

Можете да използвате идеята си, но опитайте по следния начин:

select relusers.uname
from relusers cross join
     (selext @rand := rand()) const
where relusers.users_id = floor(@rand*46+1);

Това генерира само една произволна стойност и следователно само един ред. Но само с 46 реда order by методът трябва да работи достатъчно добре:

select relusers.uname
from relusers
order by rand()
limit 1;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какъв е редът на редовете в MySQL за SELECT * FROM table_name;?

  2. Serialize срещу Implode

  3. въведените данни от формуляр не се записват в mysql db?

  4. Приставката за удостоверяване „caching_sha2_password“ не се поддържа

  5. Как да се справя условно с деление на нула с MySQL