过程SQL更新
如何在连接到另一个表时使用PROC SQL更新字段以定义条件?我不想用第二个表中的另一个字段来更新该字段,我只想用单词“Small”来更新该字段。我正在使用这种语法,但它不起作用:过程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;
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)
上的索引应该会有所帮助。