Proc SQL Update

问题描述:

如何在连接到另一个表时使用PROC SQL更新字段以定义条件?我不想用第二个表中的另一个字段更新字段,我只想用“Small”一词更新字段。我使用这个语法,但它不工作:Proc SQL Update

PROC SQL; 
UPDATE GROUP A 
SET SEGMENT = 
(SELECT 'SMALL' 
FROM SMALL_GROUP_REPORT B 
WHERE A.NUMBER = B.NUMBER); 

如果你想与来自其它表中的列来更新表,那么你就不会想单引号:

PROC SQL; 
    UPDATE GROUP A 
     SET SEGMENT = (SELECT SMALL 
         FROM SMALL_GROUP_REPORT B 
         WHERE A.NUMBER = B.NUMBER 
        ); 

但你似乎想要该段为'SMALL',当该行存在于另一个表中时:

PROC SQL; 
    UPDATE GROUP A 
     SET SEGMENT = 'SMALL' 
     WHERE EXISTS (SELECT 1 
         FROM SMALL_GROUP_REPORT B 
         WHERE A.NUMBER = B.NUMBER 
        ); 
+0

好的,我不知道EXISTS。什么是SELECT 1? –

+0

@JasonSmith这只是虚拟数据。如果返回一个或多个行,则EXISTS子句为true。 – Snorex

+0

尝试第二个查询;现在已经运行了大约10分钟,这很奇怪,因为如果我按照相同的标准将两个表连接在一起,使用常规的SELECT语句,它将在几秒钟内运行。 –