Sql 将查询结果强制转换为OrientDB中的字符串
作为测试,我正在运行查询Sql 将查询结果强制转换为OrientDB中的字符串,sql,casting,subquery,orientdb,Sql,Casting,Subquery,Orientdb,作为测试,我正在运行查询 orientdb {pumpup}> select objectId from post where objectId="6LTMvSXfM2" ----+-----+---------- # |@RID |objectId ----+-----+---------- 0 |#-2:1|6LTMvSXfM2 ----+-----+---------- 1 item(s) found. Query executed in 0.002 sec(s). 但
orientdb {pumpup}> select objectId from post where objectId="6LTMvSXfM2"
----+-----+----------
# |@RID |objectId
----+-----+----------
0 |#-2:1|6LTMvSXfM2
----+-----+----------
1 item(s) found. Query executed in 0.002 sec(s).
但当它没有被引用时,它就失败了,而且速度很慢
orientdb {pumpup}> select objectId from post where objectId=6LTMvSXfM2
0 item(s) found. Query executed in 59.216 sec(s).
我的问题是,如何将查询结果包装为字符串,以便像这样包装字符串
select from post where objectId=(select objectId from post where objectId="6LTMvSXfM2")
将子查询的结果转换为字符串格式的正确方法是什么?子查询应该返回结果集,而不是单个值,因此不能将其转换为字符串 要获得预期的结果,应使用in运算符,而不是=: 在objectId=6LTMvSXfM2的post中从objectId所在的post中选择objectId 在这种情况下,父查询中作为字符串的objectId将与子查询返回的每个记录(已经是字符串)的objectId相匹配
无论如何,这个查询实际上没有意义;-您正在执行一个不需要它的子查询我认为它应该会很快失败,并出现一个没有引号的语法错误。它不会失败,因为6LTMvSXfM2可能是一个字段的名称。OrientDB也可以在无模式模式下工作。我不理解子查询的含义。在ETL之前迁移数据时,我会收到一个通知,告知人们何时喜欢帖子。通知包含类似的objectId,而类似的包含帖子的objectId。我需要从通知中获取Post,因此我确实从Post中选择objectId=select Post.objectId,比如objectId=6LTMvSXfM2,从那里我可以获取@rid。但是如果无法将子查询的结果包装为字符串,则它总是失败。