Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

mysql एक ही तालिका में प्रत्येक श्रेणी का सर्वश्रेष्ठ चयन करें

इसे आजमाएं:

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;

यह आउटपुट करेगा:

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

दूसरा विकल्प जो आप कर सकते हैं वह है अस्थायी तालिका या दृश्य बनाना (यदि आपको उप-क्वेरी पसंद नहीं है)।

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

फिर:

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;

या एक दृश्य:

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

फिर:

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. डेटाबेस फ़ाइल लोड करते समय SQL सिंटैक्स त्रुटि (संभावित संस्करण त्रुटि?)

  2. Oracle से MySQL में माइग्रेट करें

  3. ड्राइवर वर्ग com.mysql.jdbc.Driver लोड करने में विफल

  4. mysql तालिका संरचना प्रस्ताव?

  5. MySQL में UTF8 वर्णों को संग्रहीत नहीं कर सकता