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语句搞定,不过多条语句联合搞定也可以)。
多谢了。
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语句搞定,不过多条语句联合搞定也可以)。
多谢了。
where exists(select 1 from PartOne where t.GUID=GUID and Time<'2012-08-20')
from PartTwo
left outer join PartOne on PartOne.GuidOne = PartTwo.GuidTwo
and PartOne.Time < '2012-08-20'
where PartOne.GuidOne is null
FROM PartTwo AS p
WHERE EXISTS ( SELECT 1
FROM PartOne
WHERE GUID = p.GUID AND Time < '2012-08-20' )
left outer join PartOne on PartOne.Guid = PartTow.GuidTwo
where Guid is null
delete from PartTwo t
where exists(select 1 from PartOne where t.GUID=GUID and Time<'2012-08-20')
where exists(select 1 from PartOne where t.GUID=GUID and Time<'2012-08-20')
1楼正解!
where exists(select 1 from PartOne where t.GUID=GUID and Time<'2012-08-20')
1楼正解!