【问题标题】:OrientDB: How to update column using select queryOrientDB:如何使用选择查询更新列
【发布时间】:2015-06-07 07:02:24
【问题描述】:

我需要使用以下方法更新表中的列:

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

查询工作正常,但不是名称查询以“[产品名称]”格式存储值。

我已经阅读了 orientdb 文档,我猜选择查询以集合格式返回结果。所以我已经尝试了以下功能

  • 获取(1)
  • first()
  • [0] 等(我绝望的尝试:)

提前致谢。

【问题讨论】:

    标签: sql orientdb


    【解决方案1】:

    我尝试搜索但没有得到任何干净的答案,但我做出以下更改对我有用并完成了工作:)

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

    希望这可以为某人节省时间。

    【讨论】:

      【解决方案2】:

      您观察到这种行为,因为子查询(选择查询)总是返回一个集合。 LET 块将在这里为您提供帮助。以下是您如何在查询中使用 LET 块;

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

      LET 块对于子查询、投影和保存将被多次使用的结果很有用。

      您可以找到更多信息here

      希望这会有所帮助。

      【讨论】:

      • 似乎 LET 不支持 UPDATE 语句。
      【解决方案3】:

      显然您的回答 (@Omega Silva) 无法正常工作。

      This is the error I get

      我在这里遇到了同样的问题,但我还没有找到一个优雅的解决方案。

      我想将 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 部分)

      但在我看来,必须有一个更好/更优雅的解决方案,只需一个查询。

      有什么想法吗?

      【讨论】:

        【解决方案4】:
        update Table1 set name=(select productname from Table2 where
        @rid=$parent.$current.productid), 
        name= name.replace("[","").replace("]","")
        

        【讨论】:

          【解决方案5】:

          试试那个方法(分层链接)

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

          它适用于 orientdb 2.19

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-10-07
            • 1970-01-01
            • 1970-01-01
            • 2017-06-22
            • 1970-01-01
            • 2019-10-10
            相关资源
            最近更新 更多