sql >> Database >  >> RDS >> Mysql

MySQL - SELECTEER slechts 2 rijen van elke 'groep'

Je hebt het juiste idee. MySQL garandeert echter niet de volgorde van evaluatie van uitdrukkingen. Bovendien heb je een group by position in de subquery.

Dus ik denk dat je misschien wilt:

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. dplyr left_join met kleiner dan, groter dan voorwaarde

  2. databasebestand kopiëren van /assets naar /data/datamap in bestandsverkenner - Android

  3. Toegang geweigerd voor gebruiker 'root'@'localhost' (met wachtwoord:Ja) na wachtwoord reset LINUX

  4. INSTR() Functie in Oracle