使用查询删除记录

时间:2012-04-05 05:44:41

标签: sql sql-server-2005

我正面临一个需要从表中删除记录的情况。

情景是: 第一个表有一些日期值,第二个表只包含年终(日期)记录。如果第一个表的值不在第二个表中,我需要从第一个表中删除该记录。

以下是第一个表格中的日期值

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

注意: 第二个表仅包含年终日期。

如何实现这一目标?

2 个答案:

答案 0 :(得分:0)

这应该很简单

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

答案 1 :(得分:0)

使用此

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

您可以获取该日期的varchar字符串,即05-04-12,您可以将此日期与此格式的varchar字符串进行比较,并轻松删除记录。