如题,三个Sum、Child、Dif表,数据结构相同,表内容分别如下:
Sum:
ID Name Sex
ID Name Sex
363 A 男
364 B 女
365 C 女
366 D 女
367 B 女
370 C 女
372 G 女

Child:
ID Name Sex
363 A 女
364 B 女
365 C 女
366 D 男
367 E 女
Dif为空,
目的:想将child中与A重复的B、C找出,语句如下:
INSERT INTO dbo.dif
      (name, sex)
SELECT dbo.Child.Name, dbo.Child.Sex
FROM dbo.Child INNER JOIN
      dbo.[Sum] ON dbo.Child.Name = dbo.[Sum].Name AND dbo.Child.Sex = dbo.[Sum].Sex
结果如下:
DIf:
ID Name Sex
435 B 女
436 C 女
437 B 女
438 C 女

为什么找了两次,如何只找一次

解决方案 »

  1.   

    无法理解你的意思 - -... 混乱Dif的id 列是identity的?
    你的语句都没排除A ... 又什么 "想将child中与A重复的B、C找出"
    与哪个表的A?
      

  2.   

    INSERT INTO dbo.dif (name, sex)
    SELECT a.Name, a.Sex
    FROM dbo.Child as a 
    Where exists(Select * from dbo.Child
     where Name=a.Name and sex=a.sex and id<a.id)
      

  3.   

    declare @Sum table(ID varchar(255),Name varchar(255),Sex varchar(255))
    insert @Sum
    select '363','A','男' union all
    select '364','B','女' union all
    select '365','C','女' union all
    select '366','D','女' union all
    select '367','B','女' union all
    select '370','C','女' union all
    select '372','G','女'
    declare @Child table(ID varchar(255),Name varchar(255),Sex varchar(255))
    insert @Child
    select '363','A','女' union all
    select '364','B','女' union all
    select '365','C','女' union all
    select '366','D','男' union all
    select '367','E','女'
    declare @Dif table(ID varchar(255),Name varchar(255),Sex varchar(255))insert into @Dif
    select distinct a.*
    from @Child a join @Sum b
    on a.Name = b.Name and a.Sex = b.Sexselect * from @Dif
    /*
    ID Name Sex
    364 B 女
    365 C 女
    */
      

  4.   

    解决:
    INSERT INTO dbo.dif
          (name, sex)
    SELECT a.Name, a.Sex
    FROM dbo.Child AS a
    WHERE EXISTS
              (SELECT *
             FROM dbo. SUM
             WHERE Name = a.Name AND sex = a.sex)