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

前端 未结 6 385
花落未央
花落未央 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: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
        )
    

提交回复
热议问题