たとえば、テーブルにはMYINDEX列とNAME列があります。
MYINDEX | NAME
=================
1 | BOB
2 | BOB
3 | CHARLES
特定のNAMEのMYINDEXが最も高い行を見つけるにはどうすればよいですか?たとえば、「BOB」という名前のROW-2を検索します。
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]
SELECT MAX(MYINDEX) FROM table
WHERE NAME = 'BOB'
行全体について、次のようにします。
SELECT * FROM table
WHERE NAME = 'BOB'
AND MyIndex = (SELECT Max(MYINDEX) from table WHERE NAME = 'BOB')
これに取り組むにはいくつかの方法があります。行から必要な他の列があるかもしれないと思います。そうでなければ、他の人が言っているように、単に名前を付けるだけで機能し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
)
name ='Bob'の最高のインデックスを表示したい場合は、次を使用します。
SELECT MAX(MYINDEX) AS [MaxIndex]
FROM myTable
WHERE Name = 'Bob'
内部結合をスキップしたい場合は、次のようにすることができます。
SELECT * FROM table WHERE NAME = 'BOB' ORDER BY MYINDEX DESC LIMIT 1;
使用する
FROM TABLE SELECT MAX(MYINDEX), NAME GROUP BY NAME