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

acak 2 catatan sesuai dengan posisi dan urutan berdasarkan posisi

Anda dapat mengurutkan berdasarkan position, rand() sehingga memiliki urutan acak dalam setiap position partisi. Kemudian gunakan variabel untuk menghitung catatan position partisi:

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

Kueri luar menggunakan @rn untuk memilih hanya dua catatan dari setiap position partisi.

Demo di sini



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Resource id #6 error di PHP dengan MySQL

  2. Apakah tidak masuk akal untuk menetapkan database MySQL untuk setiap pengguna di situs saya?

  3. Ambil catatan terakhir kedua untuk setiap pengguna dari database

  4. bagaimana cara mengamankan koneksi ke database google menggunakan ip publik (0.0.0.0)?

  5. Bagaimana Fungsi RIGHT() Bekerja di MySQL