2012-04-05 104 views
0

我正面临一个场景,我需要从表中删除记录。使用查询删除记录

方案是: 第一个表具有一些日期值,第二个表仅包含年终(日期)记录。如果第一个表的值不在第二个表中,我需要从第一个表中删除这个记录。

下面是在第一表

2009-06-30 00:00:00.000 
2009-12-31 00:00:00.000 
2011-11-30 00:00:00.000 
2011-12-31 00:00:00.000 

以下的时间值是在第二表中的日期值

2005-12-31 00:00:00.000 
2006-12-31 00:00:00.000 
2007-12-31 00:00:00.000 
2009-12-31 00:00:00.000 

在这里,在比较这两个表,第一表的日期值('2011-12-31 00:00:00.000 ')不在第二个表格中。因此我需要在第一个表格中单独删除这条记录。

我正在使用以下查询,但没有得到所需的结果。

查询使用

Select tmp.* from #temp tmp 
Inner Join #temp1 tmp1 
On tmp.Val_DT != tmp1.ye_dt 
Where DATEPART(mm,tmp.Val_dt) = 12 

注: 第二个表只包含单独的年终日期。

如何实现这一目标?

+0

第一张桌子的'2009-06-30 00:00:00.000'和'2011-11-30 00:00:00.000'也不在第二张桌子上。为什么不删除它们呢? – 2012-04-05 10:08:41

回答

0

这应该是足够

Delete from Table1 where Table1DateField not in (select Table2DateField from Table2) 
0

简单使用该

select CONVERT(varchar(8),GETDATE(),5) 

你可以得到最新的varchar字符串即05-04-12,你可以比较你的日期在这个格式varchar字符串并轻松删除记录。