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

произволни 2 записа според позиция и ред по позиция

Можете да сортирате по position, rand() така че да има произволен ред във всяка position дял. След това използвайте променлива, за да изброите записи на position дялове:

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

Външната заявка използва @rn за да изберете само два записа от всяка position дял.

Демо тук



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да покажа общия брой на последния ред по статус на файла?

  2. Преименувайте Mysql име на таблица с concat

  3. Как да деактивирам ПОКАЗВАНЕ НА ПРЕДУПРЕЖДЕНИЯ от Hibernate?

  4. Съхраняване на номера на кредитни карти в SESSION – начини за заобикаляне?

  5. ningx, uwsgi, python постоянна грешка в mysql след известно време от стартиране на приложението