求一条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 去掉
[解决办法]
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 学号)//删掉重复的*/
[解决办法]
数据有点出入,纠正一下
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 行)*/
[解决办法]
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 学号,姓名, 成绩