PartOne表数据如下
GUID   Name   Age      Time
111     aa    11      2012-08-13 20:53:00
25      bb    22      2012-08-14 20:53:00
3       cc    33      2012-08-15 20:53:00
21      rr    44      2012-09-01 20:53:00
54      qq    23      2012-09-02 20:53:00
41      i     28      2012-09-03 20:53:00
PartTwo表数据如下
GUIDTwo     Name       Age
55           rr        36
21           ww        42
25           xx        23
3            rw        33
111          tt        77注:从业务角度讲,PartTwo表的GUIDTwo如果等于PartOne表中的GUID值,则表示两条数据为同一个人的数据。我的目标:
1.将PartOne表中所有Time值 小于"2012-08-20"的GUID值取出来(也就是得到GUID的值分别为111、25、3)。
2.再以取出来GUID值为条件对PartTwo表执行删除。(也就是删除PartTwo表中 GUIDTwo分别等于111、25、3的数据)。最终PartTwo表结果如下(也就是最后三条被删除)->GUIDTwo     Name     Age
55           rr       36
21           ww       42请教这条SQL语句如何写?(最好能一条SQL语句搞定,不过多条语句联合搞定也可以)。
多谢了。

解决方案 »

  1.   

    delete * from PartTwo t
    where exists(select 1 from PartOne where t.GUID=GUID and Time<'2012-08-20')
      

  2.   

    试试这个:select GUIDTwo, Name, Age
    from PartTwo
    left outer join PartOne on PartOne.GuidOne = PartTwo.GuidTwo
    and PartOne.Time < '2012-08-20'
    where PartOne.GuidOne is null
      

  3.   

    DELETE  p
    FROM    PartTwo AS p
    WHERE   EXISTS ( SELECT 1
                     FROM   PartOne
                     WHERE  GUID = p.GUID AND Time < '2012-08-20' )
      

  4.   

    delete from PartTow
    left outer join PartOne on PartOne.Guid = PartTow.GuidTwo
    where Guid is null
      

  5.   

    没有delete * from 的写法吧。
    delete  from PartTwo t
    where exists(select 1 from PartOne where t.GUID=GUID and Time<'2012-08-20')
      

  6.   

    delete * from PartTwo t
    where exists(select 1 from PartOne where t.GUID=GUID and Time<'2012-08-20')
    1楼正解!
      

  7.   

    delete * from PartTwo t
    where exists(select 1 from PartOne where t.GUID=GUID and Time<'2012-08-20')
    1楼正解!