首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

求一条sql语句,越精越好解决办法

2012-04-01 
求一条sql语句,越精越好ID学号姓名成绩120110301张三82220110302李四84320110303王五85420110304马六86520

求一条sql语句,越精越好
ID 学号 姓名 成绩
1 20110301 张三 82
  2 20110302 李四 84
3 20110303 王五 85
4 20110304 马六 86
5 20110305 钱七 87
6 20110301 张三 82
7 20110303 王五 85


  ID 学号 姓名 成绩
1 20110301 张三 82
  2 20110302 李四 84
3 20110303 王五 85
4 20110304 马六 86
5 20110305 钱七 87


从上到下,得到下面记录

[解决办法]
看样子不就是唯一吗,distinct
[解决办法]
你的规则一定要明确,想你那样,如果分数不一样怎么弄,一条还是两条
[解决办法]
group by StudentId 去掉
[解决办法]

探讨
是唯一的,能写出来,我试试吗
select distinct * from Student group by StudentId
我这样写老是出错

[解决办法]
用开窗函数去重复,要么用子查询查询
[解决办法]
SQL code
CREATE TABLE Student (  ID INT IDENTITY(1,1) PRIMARY KEY,  学号 VARCHAR(40),  姓名 VARCHAR(40),  成绩 FLOAT)INSERT INTO Student VALUES('20110301','张三',82)INSERT INTO Student VALUES('20110302','李四',85)INSERT INTO Student VALUES('20110303','王五',86)INSERT INTO Student VALUES('20110304','马六',87)INSERT INTO Student VALUES('20110305','钱七',82)INSERT INTO Student VALUES('20110301','张三',85)INSERT INTO Student VALUES('20110303','王五',85)SELECT * FROM Student SELECT * FROM Student WHERE ID IN (SELECT MIN(ID) FROM Student GROUP BY 学号)/*ID          学号                                       姓名                                       成绩                                                    ----------- ---------------------------------------- ---------------------------------------- ----------------------------------------------------- 1           20110301                                 张三                                       82.02           20110302                                 李四                                       85.03           20110303                                 王五                                       86.04           20110304                                 马六                                       87.05           20110305                                 钱七                                       82.0(所影响的行数为 5 行)--DELETE FROM Student WHERE ID NOT IN(SELECT MIN(ID) FROM Student GROUP BY 学号)//删掉重复的*/
[解决办法]
数据有点出入,纠正一下
SQL code
CREATE TABLE Student (  ID INT IDENTITY(1,1) PRIMARY KEY,  学号 VARCHAR(40),  姓名 VARCHAR(40),  成绩 FLOAT)INSERT INTO Student VALUES('20110301','张三',82)INSERT INTO Student VALUES('20110302','李四',84)INSERT INTO Student VALUES('20110303','王五',85)INSERT INTO Student VALUES('20110304','马六',86)INSERT INTO Student VALUES('20110305','钱七',87)INSERT INTO Student VALUES('20110301','张三',82)INSERT INTO Student VALUES('20110303','王五',85)SELECT * FROM Student SELECT * FROM Student WHERE ID IN (SELECT MIN(ID) FROM Student GROUP BY 学号)--DELETE FROM Student WHERE ID NOT IN(SELECT MIN(ID) FROM Student GROUP BY 学号)这个也行/*ID          学号                                       姓名                                       成绩                                                    ----------- ---------------------------------------- ---------------------------------------- ---------------------1           20110301                                 张三                                       82.02           20110302                                 李四                                       84.03           20110303                                 王五                                       85.04           20110304                                 马六                                       86.05           20110305                                 钱七                                       87.0(所影响的行数为 5 行)*/ 


[解决办法]

SQL code
create table #temp(ID int identity(1,1) primary key,学号 varchar(100),姓名  varchar(100),成绩 int)goinsert into #temp(学号,姓名,成绩)select '20110301','张三', 82union allselect '20110302','李四',  84union allselect '20110303','王五',  85union allselect '20110304','马六',  86union allselect '20110305','钱七',  87union allselect '20110301','张三',  82union allselect '20110303','王五',  85goselect * from #temp where ID in(select MAX(ID) from #temp group by 姓名)
[解决办法]
select 学号,姓名, 成绩 from Student group by 学号,姓名, 成绩

热点排行