Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL - SELECT nur 2 Zeilen aus jeder 'Gruppe'

Sie haben die richtige Idee. MySQL garantiert jedoch nicht die Reihenfolge der Auswertung von Ausdrücken. Außerdem haben Sie eine group by position in der Unterabfrage.

Ich denke, Sie möchten vielleicht:

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