原贴:http://community.csdn.net/Expert/topic/5162/5162963.xml?temp=.2987635
求SQL查询语句:两个表之间查询出每个种类的最前一条记录
可能我说得不太清楚在这里我再说一次比如现在有三个班级 一班,二班,三班
然后要查询出来的效果是先查出每一班的第一名后是第二名....最后一名
至于同名次哪一个班先出现的话就哪一个班的放在前面如下表有记录
Class
id class
1 一班
2 二班
3 三班success
id classid name suc
1 2 A 80
2 3 B 90
3 2 C 70
4 1 D 75
5 1 E 78
6 3 F 85
7 2 D 86
8 2 H 73
两个表如上:
然后按我上面的要求是先找出第一个班里面第一名的后即:
因为按表success里面suc asc查出这个表的最高分为
id classid name suc
2 三班 B 90
5 一班 E 78
7 二班 D 86然后按表success里面suc asc查出这个表的每班第二高分为
id classid name suc
1 二班 A 80
4 一班 D 78
6 三班 F 85然后按表success里面suc asc查出这个表的每班第三高分
因为1和3班已经没有人了所以就只有2班的为
id classid name suc
8 二班 H 73然后按表success里面suc asc查出这个表的每班第四高分
因为1和3班已经没有人了所以就只有2班的为
id classid name suc
3 二班 C 70
----------------------------------------
按上的的样子要求查出来的按高分排的表就是
id classid name suc
2 三班 B 90
5 一班 E 78
7 二班 D 86
1 二班 A 80
4 一班 D 78
6 三班 F 85
8 二班 H 73
3 二班 C 70问题:
1:如何用一条SQL查询语句查询出上面按每个班最高分排的语句
2:如何用一条SQL查询语句查询出上面按每个班最低分排的语句谢谢
求SQL查询语句:两个表之间查询出每个种类的最前一条记录
可能我说得不太清楚在这里我再说一次比如现在有三个班级 一班,二班,三班
然后要查询出来的效果是先查出每一班的第一名后是第二名....最后一名
至于同名次哪一个班先出现的话就哪一个班的放在前面如下表有记录
Class
id class
1 一班
2 二班
3 三班success
id classid name suc
1 2 A 80
2 3 B 90
3 2 C 70
4 1 D 75
5 1 E 78
6 3 F 85
7 2 D 86
8 2 H 73
两个表如上:
然后按我上面的要求是先找出第一个班里面第一名的后即:
因为按表success里面suc asc查出这个表的最高分为
id classid name suc
2 三班 B 90
5 一班 E 78
7 二班 D 86然后按表success里面suc asc查出这个表的每班第二高分为
id classid name suc
1 二班 A 80
4 一班 D 78
6 三班 F 85然后按表success里面suc asc查出这个表的每班第三高分
因为1和3班已经没有人了所以就只有2班的为
id classid name suc
8 二班 H 73然后按表success里面suc asc查出这个表的每班第四高分
因为1和3班已经没有人了所以就只有2班的为
id classid name suc
3 二班 C 70
----------------------------------------
按上的的样子要求查出来的按高分排的表就是
id classid name suc
2 三班 B 90
5 一班 E 78
7 二班 D 86
1 二班 A 80
4 一班 D 78
6 三班 F 85
8 二班 H 73
3 二班 C 70问题:
1:如何用一条SQL查询语句查询出上面按每个班最高分排的语句
2:如何用一条SQL查询语句查询出上面按每个班最低分排的语句谢谢
INSERT Cl SELECT 1,'一班'
UNION ALL SELECT 2,'二班'
UNION ALL SELECT 3,'三班'
CREATE TABLE Su(id INT, classid INT, name VARCHAR(10), suc INT)
INSERT Su SELECT 1 , 2,'A',80
UNION ALL SELECT 2 , 3,'B',90
UNION ALL SELECT 3 , 2,'C',70
UNION ALL SELECT 4 , 1,'D',75
UNION ALL SELECT 5 , 1,'E',78
UNION ALL SELECT 6 , 3,'F',85
UNION ALL SELECT 7 , 2,'D',86
UNION ALL SELECT 8 , 2,'H',73SELECT *,
(SELECT COUNT(*) FROM Su b WHERE b.classid=a.classid AND b.suc>a.suc) cnt
FROM Su a ORDER BY cnt,idDROP TABLE Cl,Su
FROM Su a
ORDER BY (SELECT COUNT(*) FROM Su b WHERE b.classid=a.classid AND b.suc>a.suc),id
WHERE 2>(SELECT COUNT(*) FROM Su b WHERE b.classid=a.classid AND b.suc>a.suc)你是不是指这个? 我不是很明白你的意思.
FROM Su a
WHERE 2>(SELECT COUNT(*) FROM Su b WHERE b.classid=a.classid AND b.suc>a.suc)
ORDER BY (SELECT COUNT(*) FROM Su b WHERE b.classid=a.classid AND b.suc>a.suc),id2>count也可以改成 suc in top 2的写法.
这里面书里只有写字段的
你生成一个表是什么意思
(SELECT COUNT(*) FROM Su b WHERE b.classid=a.classid AND b.suc>a.suc) cnt
FROM Su a ORDER BY cnt,id
http://community.csdn.net/Expert/topic/5165/5165112.xml?temp=.5426447
也是查询的