sql >> Databáze >  >> RDS >> Mysql

náhodné 2 záznamy podle pozice a pořadí podle pozice

Můžete třídit podle position, rand() tak, aby bylo náhodné pořadí v každé position rozdělit. Poté použijte proměnnou k výčtu záznamů position oddíly:

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

Vnější dotaz používá @rn vybrat pouze dva záznamy z každé position oddíl.

Ukázka zde



  1. Jak mohu vložit skutečný čas události do databáze pomocí php mysqli?

  2. Java a SQL:vrátí hodnotu null nebo vyvolá výjimku?

  3. Android + MySQL pomocí com.mysql.jdbc.Driver

  4. Jak najít tabulku se specifickým sloupcem v postgresql