2016-10-07 5 views
0

Я хочу скопировать @rid таблицы2 в поле «r1» таблицы 1, где Table2.f1 = Table1.f2 (f1 & f2 только два других поля).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

и

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

Я получил

enter image description here

Надежда помогает.

+0

Видимо, вы сделали именно то, что я сделал. Но результат не тот. Я получаю список полей, подобный этому (мой пример - с обнаружением видео, которое я получаю от MongoDB): [Видео # 28: 16 {Mongo_ID: 5714c50f142d7d2cf7c100fb, EG_ID: Video_5714c50f142dc100fb, W: 576.0, H: 704.0, Рамки: 45061 , Label: Video, VideoID: d8637219a389a77bbb65194a} v2] Результат, который я получаю, по-видимому, согласен с тем, что Омега Сильва написала, что «вспомогательный запрос (запрос выбора) всегда возвращает коллекцию». Все еще запутано, потому что я уже пробовал это. Спасибо вам! – ChrisB

+0

Да, запрос sub (запрос выбора) всегда возвращает коллекцию. –