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
);
好的,我不知道EXISTS。什么是SELECT 1? –
@JasonSmith这只是虚拟数据。如果返回一个或多个行,则EXISTS子句为true。 – Snorex
尝试第二个查询;现在已经运行了大约10分钟,这很奇怪,因为如果我按照相同的标准将两个表连接在一起,使用常规的SELECT语句,它将在几秒钟内运行。 –