表T中有兩個數值字段m和n,如果某條記錄m值與另一條記錄的n值相等,具n值等於另一條記錄的m值,則認為這兩條記錄是同一條重複的記錄. 舉例,比如1和2,与2和1, 算是重複的.現在要篩選出不重複的記錄, 請問sql語句怎麼寫?

解决方案 »

  1.   

    select * from tb a where not exists(select 1 from tb b where a.m <= b.m and a.m = b.n and a.n = b.m)
      

  2.   

    select *
    from tb A
    where not exists (select 1 from tb B where A.m=B.n and A.m=B.m)
      

  3.   

    create table tb(m int ,n int)
    insert into tb values(1 , 2)
    insert into tb values(2 , 1)
    insert into tb values(1 , 3)
    insert into tb values(3 , 1)
    insert into tb values(1 , 4)
    go
    select a.* from tb a where not exists(select 1 from tb b where a.m = b.n and a.n = b.m) 
     
    drop table tb/*
    m           n           
    ----------- ----------- 
    1           4(所影响的行数为 1 行)
    */
      

  4.   

    rucypli(糖炒) : 抱歉,我的問題描述容易產生歧義. 一樓的回復是我想要的結果.
      

  5.   

    SELECT * FROM T  A WHERE EXISTS(SELECT M,N FROM T  B WHERE B.M=A.N AND A.M=B.N )