要求搜索a,b,c三人各最好成績,并且要列出最好成績的序號即id號 如: id name score 1 a 88 5 b 77 4 c 90
最初我覺得好象是初級的題,把眼光放在最大值上,但隨后就覺得這重點不在最大值上,而是最大值所在的id號。 題目難點:搜索出最大值所在的 id 號 例外情況:每個人都可能出現幾個最大的值
動腦:開始先想到這max函數: select max(score), [name] group by [name] 但這該死的 id 號怎么也插入不了
一線希望:用了個子查詢: select [id],[name],score from table1 a where score in (select max(b.score) as maxscore from table1 b group by b.[name] ) 可是,這 id 號還是多出來了,原因是由于該搜索是以最大值的集合作依據,如77這個最大值,可能是b的最大值,但是a和c可能也會出現77這個數,但不是最大值,所以......
勝利,最后加了個條件,使最大值集合中的name值,與搜索的name值相符合 select [id],[name],score from table1 a where score in (select max(b.score) as maxscore from table1 b group by b.[name] having a.[name]=b.[name] )