2017-02-24 90 views
-1

如何在連接到另一個表時使用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); 

回答

1

如果你想與來自其它表中的列來更新表,那麼你就不會想單引號:

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語句,它將在幾秒鐘內運行。 –