Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

mysql SELECT terbaik dari setiap kategori dalam satu tabel

Coba ini:

SELECT gamers.*
FROM gamers
INNER JOIN 
 (SELECT 
   max(score) as maxscore, 
   gameid from gamers
   GROUP BY gameid) AS b
ON (b.gameid = gamers.gameid AND b.maxscore=gamers.score) ;
ORDER BY score DESC, gameid;

Ini akan menampilkan:

+---------+--------+-------+
| gamerid | gameid | score |
+---------+--------+-------+
|       4 |      1 |    90 |
|       5 |      2 |    40 |
|       8 |      3 |    30 |
+---------+--------+-------+
3 rows in set (0.00 sec)

Opsi lain yang dapat Anda lakukan adalah membuat tabel atau tampilan sementara (jika Anda tidak menyukai sub-kueri).

create temporary table games_score (
 SELECT max(score) as maxscore, gameid FROM gamers GROUP BY gameid
);

Kemudian:

SELECT gamers.* 
FROM gamers 
INNER JOIN games_score AS b ON (b.gameid = gamers.gameid AND b.maxscore=gamers.score) 
ORDER BY score DESC, gameid;

ATAU tampilan:

create or replace view games_score AS 
SELECT max(score) as maxscore, gameid FROM gamers GROUP BY gameid;

Kemudian:

SELECT gamers.* 
FROM gamers 
INNER JOIN games_score AS b ON (b.gameid = gamers.gameid AND b.maxscore=gamers.score) 
ORDER BY score DESC, gameid;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cara memilih 5 nilai maks teratas di mytable

  2. mendapatkan kesalahan Status HTTP 405 - Metode HTTP GET tidak didukung oleh URL ini tetapi tidak pernah digunakan `get`?

  3. Bagaimana cara terhubung dengan MySQL DB yang berjalan sebagai wadah di buruh pelabuhan?

  4. Bisakah saya membuat halaman kueri khusus tanpa mengesampingkan pagination default?

  5. Permintaan SQL mengembalikan Operan harus berisi 1 kolom