过程SQL更新

过程SQL更新,sql,sas,Sql,Sas,如何在连接到另一个表时使用PROC SQL更新字段以定义条件?我不想用第二个表中的另一个字段来更新该字段,我只想用单词“Small”来更新该字段。我正在使用这种语法,但它不起作用: PROC SQL; UPDATE GROUP A SET SEGMENT = (SELECT 'SMALL' FROM SMALL_GROUP_REPORT B WHERE A.NUMBER = B.NUMBER); 如果要使用另一个表中的列更新该表,则不需要单引号: PROC SQL; UPDAT

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

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
                      );
但是,当该行存在于另一个表中时,您似乎希望该段
“小”

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

好吧,我不知道存在什么。选择1的目的是什么?@jasonmith它只是虚拟数据。如果返回了1行或多行,则EXISTS子句为true;现在运行了大约10分钟,这很奇怪,因为如果我使用常规SELECT语句按相同的条件将两个表连接在一起,它只需几秒钟即可运行。@jasonmith。
SMALL\u GROUP\u REPORT(NUMBER)
上的索引应该会有所帮助。