2012-04-05 158 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字符串並輕鬆刪除記錄。