Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL - WYBIERZ tylko 2 wiersze z każdej „grupy”

Masz dobry pomysł. MySQL nie gwarantuje jednak kolejności oceny wyrażeń. Dodatkowo masz group by position w podzapytaniu.

Myślę więc, że możesz chcieć:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przekonwertować dane MySQL ze strony na PDF

  2. Załącznik PHP w wiadomości e-mail jest pusty

  3. Upuść wiele kolumn MySQL

  4. CloudFormation :Szablon RDS Mysql do tworzenia bazy danych, tabel, użytkownika lub schematu ładowania

  5. Jak pogrupować według miesiąca i zwrócić zero, jeśli nie ma wartości dla danego miesiąca?