Getting last record from MySQL for each individual user

I have a table like this

╔════╦════════╦═════════════╦═════════════════╗PKNAMEDEGREEYEAR_OF_PASSING
╠════╬════════╬═════════════╬═════════════════╣
║  1 ║ ShreyB.E.        ║            2004 ║
║  2 ║ ShreyHigh School ║            2000 ║
║  3 ║ GauravB.E.        ║            2000 ║
║  4 ║ GauravM.Sc.       ║            2002 ║
╚════╩════════╩═════════════╩═════════════════╝

      

How can I query to get the last degree result set of each person like below?

╔════╦════════╦════════╦═════════════════╗PKNAMEDEGREEYEAR_OF_PASSING
╠════╬════════╬════════╬═════════════════╣
║  1 ║ ShreyB.E.   ║            2004 ║
║  4 ║ GauravM.Sc.  ║            2002 ║
╚════╩════════╩════════╩═════════════════╝

      

+3


source to share


1 answer


SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT  Name, MAX(Year_Of_Passing) max_val
            FROM tableName
            GROUP BY Name
        ) b ON  a.name = b.name AND
                a.Year_Of_Passing = b.max_val

      

UPDATE 1



SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT  Name, MAX(Year_Of_Passing) max_val, MAX(PK) max_pk
            FROM tableName
            GROUP BY Name
        ) b ON  a.name = b.name AND
                CASE WHEN b.max_val IS NULL
                     THEN a.pk = max_PK
                     ELSE a.Year_Of_Passing = b.max_val 
                  END

      

+5


source







All Articles