当前位置: 代码迷 >> ASP.NET >> 求一条sql语句,越精越好解决办法
  详细解决方案

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

热度:4088   发布时间:2013-02-25 00:00:00.0
求一条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 行)*/
  相关解决方案