4

たとえば、テーブルにはMYINDEX列とNAME列があります。

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

特定のNAMEの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 に答える