2010-12-10 68 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