sql >> Databasteknik >  >> RDS >> Mysql

MySQL - VÄLJ endast 2 rader från varje "grupp"

Du har rätt idé. MySQL garanterar dock inte ordningen för utvärdering av uttryck. Dessutom har du en group by position i underfrågan.

Så jag tror att du kanske vill:

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. node-mysql:Flera satsfrågor, ER_PARSE_ERROR

  2. MySQL för att fylla i saknade datum när du använder GROUP BY DATE(table.timestamp) utan att gå med på temporär tabell

  3. Vila dialekt för MySQL 8?

  4. Långa strängar i N-Hibernate med Oracle orsakar fel