|
主题: 这个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
谢了谢了,四海之内有兄弟,因特网上有良师。
|