2017-02-24 2 views
-1

条件を定義するために、別のテーブルに参加しているときにPROC SQLを使用してフィールドを更新するにはどうすればよいですか?私は2番目のテーブルから別のフィールドでフィールドを更新したくないので、フィールドを "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

わかりましたが、私は存在については知りませんでした。 SELECT 1は何ですか? –

+0

@ JasonSmithダミーデータです。 1つ以上の行が返された場合、EXISTS句は真です。 – Snorex

+0

2番目のクエリを試行します。約10分後に実行されていました。これは、同じ条件で2つのテーブルを結合して、通常のSELECT文を使用すると数秒で実行されるため、奇妙です。 –