Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sự cố khi chọn một hàng ngẫu nhiên từ bảng MySQL

Mã của bạn đang trả về nhiều hàng vì rand() được đánh giá trên mỗi hàng. Vì vậy, bạn có sự thay đổi của nhiều trận đấu. Và một cơ hội không có gì sánh được.

Bạn có thể sử dụng ý tưởng của mình, nhưng hãy thử theo cách này:

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

Điều này chỉ tạo ra một giá trị ngẫu nhiên và do đó chỉ tạo ra một hàng. Tuy nhiên, chỉ với 46 hàng, order by phương pháp phải hoạt động đủ tốt:

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. Lưu trữ đường dẫn tệp trong Cơ sở dữ liệu

  2. Chuyển đổi hàng thành cột trong MySQL

  3. Kích thước bảng có ảnh hưởng đến hiệu suất INSERT không?

  4. mảng tìm nạp mysql

  5. Loại dữ liệu để lưu trữ Kinh độ / Vĩ độ trong Mysql