2017-06-08 8 views
0

私は別のテーブルのデータを使って更新をしようとしています。私はthis answer(2番目の部分)を試しましたが、それは私のために働いていません。構文エラーの一般的なエラーメッセージが表示されます。InformixのSELECTからどのように更新しますか?

this solutionも試してみましたが、構文エラーメッセージも受信しました。

UPDATE dogs 
SET name = 
    (
     SELECT 'Buddy' 
     FROM systables 
     WHERE tabid = 1 
    ); 

しかし、私は倍数の列を更新する必要があります:私はちょうど1列を更新しようとした場合

、それが動作します。残念ながら、これは動作していない:

UPDATE dogs 
SET (name, breed) = 
    (
     SELECT 'Buddy', 'pug' 
     FROM systables 
     WHERE tabid = 1 
    ); 

Informixのバージョンは12.10.FC8

答えて

4

あなたは、サブクエリの周りの括弧の1つの以上のセットが欠落しているです。 Informix manualから:

サブクエリは、かっこで囲む必要があります。これらの括弧 は、等号( =)の直後の括弧内にネストされています。式リストは、複数のサブクエリを含む場合、各サブクエリは、連続したサブクエリを分離 カンマ(、)で、括弧の間に封入されなければならない:

UPDATE ... SET ... = ((subqueryA),(subqueryB), ... (subqueryN)) 

以下の実施例は、SET句のサブクエリの使用を示す:

UPDATE items  
SET (stock_num, manu_code, quantity) = 
    ( 
    (
     SELECT stock_num, manu_code 
     FROM stock  
     WHERE description = 'baseball' 
    ), 
    2 
)  
WHERE item_num = 1 AND order_num = 1001; 

UPDATE table1  
SET (col1, col2, col3) = 
    (
    (
     SELECT MIN (ship_charge), MAX (ship_charge) 
     FROM orders 
    ), 
    '07/01/2007' 
) 
WHERE col4 = 1001; 

だからあなたのアップデートは、Informixのに受け入れられるようにするためにそれがなければならない:

UPDATE dogs 
SET (name, breed) = 
    (
    (
     SELECT 'Buddy', 'pug' 
     FROM systables 
     WHERE tabid = 1 
    ) 
); 
+0

それは働いた!ありがとう! – Zanon

関連する問題