sql >> Database teknologi >  >> RDS >> Mysql

MySQL - VÆLG kun 2 rækker fra hver 'gruppe'

Du har den rigtige idé. MySQL garanterer dog ikke rækkefølgen af ​​evaluering af udtryk. Derudover har du en group by position i underforespørgslen.

Så jeg tror, ​​du måske vil:

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. hvordan man sletter duplikerede værdier i mysql-tabel

  2. #1115 - Ukendt tegnsæt:'utf8mb4'

  3. Få den mest almindelige værdi for hver værdi i en anden kolonne i SQL

  4. MYSQL PHP Vælg