主题:  这个sql查询如何实现?

aSir

职务:普通成员
等级:1
金币:0.0
发贴:78
#12004/10/13 22:48:58
库中表如下:
id name score
1 a 88
2 b 76
3 c 66

4 c 90
5 b 77
6 a 56

7 b 77
8 c 67
9 a 44


姓名为abc多次重复加入,现在要取出abc的各自最大的记录。即:
id name score
1 a 88
5 b 77
4 c 90

因为实际中“abc...”有60个,在一页中打出,所以做60次查询太复杂,能用一个查询实现吗?请教高手,谢!

编辑历史:[此帖最近一次被 aSir 编辑过(编辑时间:2004-10-13 23:13:12)]


蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#22004/10/14 1:33:27
SELECT
(SELECT MAX(Score) FROM Table1 WHERE [Name]='a') AS MaxA,
(SELECT MAX(Score) FROM Table1 WHERE [Name]='b') AS MaxB,
(SELECT MAX(Score) FROM Table1 WHERE [Name]='c') AS MaxC

编辑历史:[此帖最近一次被 蓝鲸 编辑过(编辑时间:2004-10-14 01:59:50)]

非常大鱼

蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#32004/10/14 1:58:31
另一以记录形式:
SELECT
    (SELECT ID FROM Table1 AS A WHERE Score =
        (SELECT MAX(Score) GROUP BY [Name]) ) AS ID
, B.[Name], B.[Score]
INNER JOIN Table1 AS B ON
A.ID = B.ID

这个错误了

编辑历史:[此帖最近一次被 蓝鲸 编辑过(编辑时间:2004-10-14 03:28:34)]

非常大鱼

蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#42004/10/14 3:24:37
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])

这个我在SQL里试过了,还是有些意思
如果a有二个相同的最大值,则返回二个a记录ID

编辑历史:[此帖最近一次被 蓝鲸 编辑过(编辑时间:2004-10-14 03:34:21)]

非常大鱼

dreamexpress_5d

职务:普通成员
等级:1
金币:10.0
发贴:2229
#52004/10/14 11:48:21
这只要用Group就行了啊,不要想的太多啊!

按Name来分组,列出分组中的最大值不结了?


语句如下:

select name,最高分=max(score) from TABLE1 group by name



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#62004/10/14 14:56:49
确实,列出NAME和分值很容易,但要这个ID,也就是出现最高分时的ID,就有些周折了。


非常大鱼

aSir

职务:普通成员
等级:1
金币:0.0
发贴:78
#72004/10/14 18:35:27
谢了谢了,四海之内有兄弟,因特网上有良师。