4

例如,该表具有列 MYINDEX 和 NAME。

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

我如何找到特定名称的 MYINDEX 最高的行?例如,我想查找名称“BOB”的 ROW-2。

4

6 回答 6

12

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

编辑:获取整行:

Select * //never do this really
From Table
Where MYINDEX = (Select Max(MYINDEX) From Table Where Name = [InsertNameHere]
于 2010-07-26T17:51:37.233 回答
4
SELECT MAX(MYINDEX) FROM table
WHERE NAME = 'BOB'

对于整行,请执行以下操作:

SELECT * FROM table
WHERE NAME = 'BOB'
AND MyIndex = (SELECT Max(MYINDEX) from table WHERE NAME = 'BOB')
于 2010-07-26T17:51:49.500 回答
4

有几种方法可以解决这个问题。我假设您可能希望从该行中获得其他列,否则正如其他人所说,只需命名即可MAX(my_index) ... GROUP BY name。这里有几个例子:

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

另一种可能的解决方案:

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
    )
于 2010-07-26T17:52:34.167 回答
0

如果您想查看 name = 'Bob' 的最高索引,请使用:

SELECT MAX(MYINDEX) AS [MaxIndex]
FROM myTable
WHERE Name = 'Bob'
于 2010-07-26T17:51:49.910 回答
0

如果你想跳过内部连接,你可以这样做:

SELECT * FROM table WHERE NAME = 'BOB' ORDER BY MYINDEX DESC LIMIT 1;
于 2017-08-10T18:38:17.407 回答
-1

利用

FROM TABLE SELECT MAX(MYINDEX), NAME GROUP BY NAME 
于 2010-07-26T17:51:41.633 回答