2010-12-10 29 views
0

在下面的語句中,我試圖根據從子查詢SELECT語句中檢索到的數據來規範表'Replies'中的LocationID。基本上,Replies表中存在不在MasterList中的LocationID,我想用'1234'的位置替換那些發生的事件。我認爲下面的說法可行,但事實並非如此。當我嘗試運行它,它更新所有LocationID在5月5日後的回覆表,2010年子查詢中的更新表

UPDATE Replies 
SET Replies.LocationID = '1234' 
FROM (SELECT lml.LocationID FROM Replies sfs LEFT JOIN MasterList lml ON lml.LocationID=sfs.LocationID WHERE sfs.CreateDate >= '5/5/2010') AS rs 
WHERE rs.LocationID is null 

回答

2

您可以使用NOT EXISTS子句找不上masterList存在的

update replies 
set locationid='1234' 
where not exists (
select 1 from masterlist as ml 
where 
    ml.locationid=replies.locationid 
) 
and CreateDate >= '5/5/2010' 
位置
+0

謝謝,這工作完美。大多數情況下,我明白髮生了什麼,除非我不知道'SELECT 1'是什麼點;這是我第一次看到它 – ploosh 2010-12-10 14:45:43