Student表SNO SNAME SClass
---------------------------------------
1 a 语文
1 a 数学
1 a 英语
2 b 语文
2 b 数学
2 b 英语
3 c 语文
3 d 数学
.
.
.
.在这张表里,明显 " 3 d 数学 "
这条数据是错误的,假设现在的数据很多很多,我用什么方法可以把这条数据查找出来呢?
---------------------------------------
1 a 语文
1 a 数学
1 a 英语
2 b 语文
2 b 数学
2 b 英语
3 c 语文
3 d 数学
.
.
.
.在这张表里,明显 " 3 d 数学 "
这条数据是错误的,假设现在的数据很多很多,我用什么方法可以把这条数据查找出来呢?
科目數(SName對科目數還是排序)--排序判斷問題以上05用row_number;2000用臨時表
1 a
2 b
3 c
-----------------------
是这规律吧?
select SNO,SNAME from t
group by SNO,SNAME)t
group by SNO
having count(1)>1--
SNO
----
3这个意思?
set nocount on
declare @t table(SNO int, SNAME varchar(10), SClass nvarchar(8))
---------------------------------------
insert @t select 1, 'a' , N'语文'
insert @t select 1, 'a' , N'数学'
insert @t select 1, 'a' , N'英语'
insert @t select 2, 'b', N'语文'
insert @t select 2, 'b', N'数学'
insert @t select 2, 'b', N'英语'
insert @t select 3, 'c' , N'语文'
insert @t select 3, 'd' , N'数学'
select * from @t where sno in(select sno from @t group by sno having count(*)<3)
--sno=3組數據有問題,SNAME不同
/*
SNO SNAME SClass
----------- ---------- --------
3 c 语文
3 d 数学*/
left join (
select sno,count(*) aa from (
select distinct sno,sname from student) a
group by sno ) b on a.sno=b.sno
where b.aa>1
declare @t table(SNO int, SNAME varchar(10), SClass nvarchar(8))
---------------------------------------
insert @t select 1, 'a' , N'语文'
insert @t select 1, 'a' , N'数学'
insert @t select 1, 'a' , N'英语'
insert @t select 2, 'b', N'语文'
insert @t select 2, 'b', N'数学'
insert @t select 2, 'b', N'英语'
insert @t select 3, 'c' , N'语文'
insert @t select 3, 'd' , N'数学'
select * from @t t where exists(select 1 from @t where sno=t.sno and sname<>t.sname)
/*
SNO SNAME SClass
----------- ---------- --------
3 c 语文
3 d 数学
*/
set nocount on
declare @t table(SNO int, SNAME varchar(10), SClass nvarchar(8))
---------------------------------------
insert @t select 1, 'a' , N'语文'
insert @t select 1, 'a' , N'数学'
insert @t select 1, 'a' , N'英语'
insert @t select 2, 'b', N'语文'
insert @t select 2, 'b', N'数学'
insert @t select 2, 'b', N'英语'
insert @t select 3, 'c' , N'语文'
insert @t select 3, 'd' , N'数学' SELECT * FROM @t a
WHERE sName<>(
SELECT TOP 1 SNAME
FROM @t
WHERE SNo=a.SNO
)
/*
SNO SNAME SClass
----------- ---------- --------
3 d 数学*/