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

MySQL - ИЗБЕРЕТЕ само 2 реда от всяка "група"

Имаш правилната идея. MySQL обаче не гарантира реда на оценка на изразите. Освен това имате group by position в подзаявката.

Така че мисля, че може да искате:

SELECT . . .
FROM (SELECT name, surname, position, value, points, 
             (@num := if(@type = position, @num + 1,
                         if(@type := position, 1, 1)
                        )
             ) AS row_number
      FROM players p CROSS JOIN
           (SELECT @num := 0, @type := '') params
      WHERE (name LIKE '%$searchphrase%' OR surname LIKE '%$searchphrase%') AND
            value >= '$minvalue' AND value <= '$maxvalue'
      ORDER BY position
     )  x
WHERE x.row_number <= 2



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Код на изключение от безизходица за PHP, MySQL PDOException?

  2. Използване на Like в MySQL за операции за търсене с помощта на шаблон

  3. GROUP BY поведение, когато в клаузата SELECT не присъстват агрегатни функции

  4. Как да сортирате резултатите от заявката по разстояние в Laravel QueryBuilder / MySQL Spatial пакет?

  5. PHP обвързване на заместващ знак