sql >> Databáze >  >> RDS >> Mysql

MySQL – VYBERTE pouze 2 řádky z každé „skupiny“

Máte správný nápad. MySQL však nezaručuje pořadí vyhodnocování výrazů. Navíc máte group by position v dílčím dotazu.

Takže si myslím, že byste mohli chtít:

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. Připojte dvě tabulky mysql, jeden až mnoho vztahů

  2. Zlepšete výkon dotazů SQL Server na velkých tabulkách

  3. Jak změnit výchozí profil pošty databáze pro uživatele v SQL Server (T-SQL)

  4. Jak importovat binlog MySQL, který obsahuje INSERTy pole TIMESTAMP s výchozí hodnotou CURRENT_TIMESTAMP