Mysql
 sql >> база данни >  >> RDS >> Mysql

Вземете максимална стойност и съответната колона

Тази заявка трябва да получи това, от което се нуждаете:

SELECT
    player_id, game_id, score
FROM
(
    SELECT game_id,MAX(score) AS MaxScore
    FROM games
    GROUP BY game_id
) AS Winners
JOIN games
    ON (games.game_id = Winners.game_id AND games.score = Winners.MaxScore)

Предполага се, че равенството е победа и за двамата играчи.

SQLFiddle

Ако искате да получите само играча и неговия брой победи, можете да използвате тази заявка:

SELECT
    player_id, COUNT(*) AS wins
FROM
(
    SELECT game_id,MAX(score) AS MaxScore
    FROM games
    GROUP BY game_id
) AS Winners
JOIN games
    ON (games.game_id = Winners.game_id AND games.score = Winners.MaxScore)
WHERE player_id = {player_id}
GROUP BY player_id

Просто заменете {player_id} с играча, който търсите и wins е техният брой победи или равенства.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql бавна заявка

  2. върнете номера на оригиналния ред на mySQL

  3. Изберете, ако съществува, друго вмъкване?

  4. Комбинирайте (сливане) две колони от две таблици в една SQL заявка

  5. Повторно използване на MySQL връзка Наследяване на PHP обект