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 去掉
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
用开窗函数去重复,要么用子查询查询
------解决方案--------------------------------------------------------
- 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 行)*/