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

ngẫu nhiên 2 bản ghi theo vị trí và thứ tự theo vị trí

Bạn có thể sắp xếp theo position, rand() để có một thứ tự ngẫu nhiên trong mỗi position vách ngăn. Sau đó, sử dụng biến để liệt kê các bản ghi của position phân vùng:

SELECT q_id, position, qtn, level, rn
FROM (
  SELECT q_id, position, qtn, level,
           @rn := IF(@pos = position, @rn + 1,
                   IF(@pos := position, 1, 1)) AS rn
  FROM (
    SELECT *
    FROM tbl_question     
    WHERE level = '1'
    ORDER BY position, rand() ) a
  CROSS JOIN (SELECT @rn := 0, @pos := 0) AS vars ) b
WHERE b.rn <= 2  
ORDER BY position

Truy vấn bên ngoài sử dụng @rn để chỉ chọn hai bản ghi từ mỗi position phân vùng.

Demo tại đây



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysqlimport:Lỗi:1045, Quyền truy cập bị từ chối

  2. chèn vào cơ sở dữ liệu từ trường văn bản trùng lặp nếu không trống php sql

  3. Tên bảng cơ sở dữ liệu số ít hay số nhiều?

  4. Làm thế nào để lấp đầy khoảng trống ngày trong MySQL?

  5. Đếm số hàng trong golang