利用sql查询每组第一个数据
来源:未知 责任编辑:责任编辑 发表时间:2014-05-10 12:27 点击:次
今天在一个.NET群里看到有个人问如何查找到每组第一个人的全部信息,当时自己也在忙着公司的和学校的需求报告,但是自己也是希望尝试一下的,就让他先把数据库给我,在完成了该完成任务的时候,我还是很乐意的帮助那些需要帮助的人了,可是还是挺悲剧的,我的Sql2008打不开他的数据库(因为Sql2008支持智能提示,所有现在用的是Sql2008)。跟他交流了一下,才知道数据库没有多少数据,那我还不如自己写脚本来解决这个问题。当然还是脱离不了互联网的,最好把写好的代码和大家分享一下。
题目大概的意思是这样的,找出每组老师(Teacher)的最大的Uid的数据。
1 --创建一个数据库
2 CREATE DATABASE MyStudySql
3 GO
4
5 --创建表
6 CREATE TABLE DOGroupByFirstTable(
7 [Uid] INT IDENTITY NOT NULL PRIMARY KEY, --主键
8 Student nvarchar(10) NOT NULL, --学生姓名
9 Teacher nvarchar(10) NOT NULL --老师姓名
10 )
11 GO
12
13 --插入数据
14 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小童','小吴');
15 GO
16 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小童','小王');
17 GO
18 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小童','小黄');
19 GO
20 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小林','小吴');
21 GO
22 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小林','小王');
23 GO
24 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小林','小黄');
25 GO
26 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小徐','小吴');
27 GO
28 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小徐','小王');
29 GO
30 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小徐','小黄');
31 GO
32 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小黑','小吴');
33 GO
34 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小白','小王');
35 GO
36 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小兰','小黄');
37 GO
38
39 --测试插入的数据
40 SELECT * FROM DOGroupByFirstTable
41
42 --查找每组老师中最大的Uid
43 SELECT *
44 FROM DOGroupByFirstTable AS temp
45 WHERE temp.Student IN
46 (SELECT TOP 1 Student
47 FROM DOGroupByFirstTable
48 WHERE temp.Teacher=[Teacher] --这里是以老师为相等,就是你需要分组的对象
题目大概的意思是这样的,找出每组老师(Teacher)的最大的Uid的数据。
1 --创建一个数据库
2 CREATE DATABASE MyStudySql
3 GO
4
5 --创建表
6 CREATE TABLE DOGroupByFirstTable(
7 [Uid] INT IDENTITY NOT NULL PRIMARY KEY, --主键
8 Student nvarchar(10) NOT NULL, --学生姓名
9 Teacher nvarchar(10) NOT NULL --老师姓名
10 )
11 GO
12
13 --插入数据
14 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小童','小吴');
15 GO
16 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小童','小王');
17 GO
18 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小童','小黄');
19 GO
20 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小林','小吴');
21 GO
22 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小林','小王');
23 GO
24 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小林','小黄');
25 GO
26 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小徐','小吴');
27 GO
28 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小徐','小王');
29 GO
30 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小徐','小黄');
31 GO
32 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小黑','小吴');
33 GO
34 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小白','小王');
35 GO
36 INSERT INTO DOGroupByFirstTable(Student,Teacher) VALUES('小兰','小黄');
37 GO
38
39 --测试插入的数据
40 SELECT * FROM DOGroupByFirstTable
41
42 --查找每组老师中最大的Uid
43 SELECT *
44 FROM DOGroupByFirstTable AS temp
45 WHERE temp.Student IN
46 (SELECT TOP 1 Student
47 FROM DOGroupByFirstTable
48 WHERE temp.Teacher=[Teacher] --这里是以老师为相等,就是你需要分组的对象
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>