簡體   English   中英

OrientDB:如何使用select查詢更新列

[英]OrientDB: How to update column using select query

我需要使用以下內容更新表中的列:

update Table1 set name = (select productName from Table2 where
@rid=$parent.$current.productid)

查詢工作正常但不是名稱查詢以“[productname]”格式存儲值。

我已閱讀orientdb文檔,我猜選擇查詢以集合格式返回結果。 所以我已經嘗試過以下功能

  • 得到(1)
  • 第一()
  • [0]等(我絕望的嘗試:)

提前致謝。

我嘗試搜索但沒有得到任何干凈的ans,但我做了以下更改為我工作並完成了工作:)

update Table1 set name=(select productname from Table2 where
@rid=$parent.$current.productid), 
name= name.replace("\[","").replace("\]","")

希望這為某人節省時間。

您觀察到此行為,因為子查詢(選擇查詢)始終返回一個集合。 LET塊可以幫助你。 以下是在查詢中使用LET塊的方法;

update Table1 set name = $name[0].productname LET $name = (select productname from Table2 where @rid=$parent.$current.productId)

LET塊對於將多次使用的子查詢,投影和保持結果非常有用。

您可以在此處找到更多信息。

希望這可以幫助。

顯然你的答案(@Omega Silva)不能正常工作。

這是我得到的錯誤

我在這里有同樣的問題,我還沒有找到一個優雅的解決方案。

我想將Table2的@rid復制到Table1的字段“r1”中,其中Table2.f1 = Table1.f2(f1&f2只是另外兩個字段)。

我想出的唯一解決方案是:

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

這將返回一個包含整個字段/值列表的字符串。 然后我修剪它如下:

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

(僅保留@rid部分)

但在我看來,只需一個查詢就必須有更好/更優雅的解決方案。

有任何想法嗎?

update Table1 set name=(select productname from Table2 where
@rid=$parent.$current.productid), 
name= name.replace("[","").replace("]","")

嘗試該方法(hierahical鏈接)

UPDATE test1 SET ttt=(SELECT FROM test1 WHERE id=$parent.$current.parentId),
parent=ttt[0].@rid,ttt=null

它適用於orientdb 2.19

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM