2016-10-07 10 views
0

Table2の@ridをTable1のフィールド "r1"にコピーします。ここで、Table2.f1 = Table1.f2(f1 & f2の2つのフィールドのみ)です。OrientDB SQL - サブクエリを使用した更新

私が思いついた唯一の解決策はこれです:

UPDATE Table1 SET r1=(SELECT @rid FROM Table2 
WHERE Table2.f1=$parent.$current.f2) 

しかし、それは全体のフィールド/値のリストを持つ文字列を返します。 は、だから私は、次のようにそれをトリミングする必要があります。

UPDATE Table1 SET r1=r1.substring(6,12) 

を(ちょうど@rid部分を維持するために)しかし、単一で、より良い/よりエレガントな解決策が存在しなければならないことに私には思えますクエリ。

上記のフィールドリストから@ridのみを抽出する方法はありますか?

私もOmega Silva's solutionを試しましたが、これはうまくいきません。 This is the error I get.

答えて

0

私が正しく理解していれば、私は知らないが、私はこの小さな例で試してみました

enter image description here

と私は

enter image description here

希望を持っ

UPDATE Table1 SET r1=(SELECT @rid FROM Table2 WHERE f1=$parent.$current.f2) 

と助けになる。

+0

明らかに、あなたは私がしたことを正確に行いました。しかし結果は同じではありません。 私はこのようなフィールドリストを取得しています(私の例はMongoDBから取得したビデオ検出です): [ビデオ#28:16 {Mongo_ID:5714c50f142d7d2cf7c100fb、EG_ID:Video_5714c50f142dc100fb、W:576.0、H:704.0、Frames:45061 、ラベル:Video、VideoID:d8637219a389a77bbb65194a} v2] 私が得た結果は、「サブクエリ(選択クエリ)は常にコレクションを返す」というOmega Silvaの記述と一致しているようです。 まだ混乱していますので、私はこれを試しました。とにかくありがとうございます! – ChrisB

+0

はい、サブクエリ(selectクエリ)は常にコレクションを返します。 –

関連する問題