Student表SNO        SNAME        SClass
---------------------------------------
1          a            语文
1          a            数学
1          a            英语
2          b            语文
2          b            数学
2          b            英语
3          c            语文
3          d            数学
.
.
.
.在这张表里,明显  "  3          d            数学   "
这条数据是错误的,假设现在的数据很多很多,我用什么方法可以把这条数据查找出来呢?

解决方案 »

  1.   

    ?
    科目數(SName對科目數還是排序)--排序判斷問題以上05用row_number;2000用臨時表
      

  2.   

    不会啊   帮你顶  你的表里是每个SNAME 都有三笔记录  分别是语文、数学、英语吗
      

  3.   

    SNO        SNAME        
    1           a
    2           b
    3           c
    -----------------------
    是这规律吧?
      

  4.   

    select SNO from( 
    select SNO,SNAME from t
    group by SNO,SNAME)t
    group by SNO
    having count(1)>1--
    SNO         
    ---- 
    3这个意思?
      

  5.   

    --猜
    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          数学*/
      

  6.   

    怪我没说清楚,是这样的,每个SNO都只能有一个SNAME,然后SClass可以无限多
      

  7.   

    select a.* from student a
    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
      

  8.   

    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 t where exists(select 1 from @t where sno=t.sno and sname<>t.sname)
    /*
    SNO         SNAME      SClass   
    ----------- ---------- -------- 
    3           c          语文
    3           d          数学
    */
      

  9.   

    如何知道哪个SNAME是正确的?
      

  10.   


    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          数学*/