SQL how to find rows which have highest value of specific column

前端 未结 6 386
花落未央
花落未央 2021-01-19 23:37

For example, the table has columns MYINDEX and NAME.

MYINDEX | NAME
=================
1       | BOB
2       | BOB
3       | CHARLES

Ho do

相关标签:
6条回答
  • 2021-01-19 23:46

    Use

    FROM TABLE SELECT MAX(MYINDEX), NAME GROUP BY NAME 
    
    0 讨论(0)
  • 2021-01-19 23:51

    SELECT Max(MYINDEX) FROM table WHERE NAME = [insertNameHere]

    EDIT: to get the whole row:

    Select * //never do this really
    From Table
    Where MYINDEX = (Select Max(MYINDEX) From Table Where Name = [InsertNameHere]
    
    0 讨论(0)
  • 2021-01-19 23:54

    There are several ways to tackle this one. I'm assuming that there may be other columns that you want from the row, otherwise as others have said, simply name, MAX(my_index) ... GROUP BY name will work. Here are a couple of examples:

    SELECT
        MT.name,
        MT.my_index
    FROM
    (
        SELECT
            name,
            MAX(my_index) AS max_my_index
        FROM
            My_Table
        GROUP BY
            name
    ) SQ
    INNER JOIN My_Table MT ON
        MT.name = SQ.name AND
        MT.my_index = SQ.max_my_index
    

    Another possible solution:

    SELECT
        MT1.name,
        MT1.my_index
    FROM
        My_Table MT1
    WHERE
        NOT EXISTS
        (
            SELECT *
            FROM
                My_Table MT2
            WHERE
                MT2.name = MT1.name AND
                MT2.my_index > MT1.my_index
        )
    
    0 讨论(0)
  • 2021-01-19 23:54

    If you want to skip the inner join, you could do:

    SELECT * FROM table WHERE NAME = 'BOB' ORDER BY MYINDEX DESC LIMIT 1;
    
    0 讨论(0)
  • 2021-01-19 23:56

    If you wanted to see the highest index for name = 'Bob', use:

    SELECT MAX(MYINDEX) AS [MaxIndex]
    FROM myTable
    WHERE Name = 'Bob'
    
    0 讨论(0)
  • 2021-01-20 00:02
    SELECT MAX(MYINDEX) FROM table
    WHERE NAME = 'BOB'
    

    For the whole row, do:

    SELECT * FROM table
    WHERE NAME = 'BOB'
    AND MyIndex = (SELECT Max(MYINDEX) from table WHERE NAME = 'BOB')
    
    0 讨论(0)
提交回复
热议问题