Удаление 100 лучших объектов в выражении DQL - PullRequest
0 голосов
/ 18 февраля 2019

Мне нужно удалить первые 100 лучших объектов из таблицы dm_document.

Я уже пробовал:

  • УДАЛИТЬ объекты dm_document, где object_name = 'TestObject' enable (RETURN_TOP 100);

  • УДАЛИТЬ объекты dm_document, где r_object_id in (выберите r_object_id из dm_document, где object_name = 'TestObject' enable (RETURN_TOP 100));

Но оба не работали.Есть ли у вас какие-либо советы / идеи?

1 Ответ

0 голосов
/ 18 февраля 2019

К сожалению, это невозможно с помощью одного запроса DQL, поскольку подсказки применяются только к операторам SELECT при использовании в качестве основного оператора, и вспомогательный выбор также не поможет.

Вы можете решить это с помощью DFC (в Java, Groovy или любом другом языке, который может работать с dfc.jar ).Выберите 100 идентификаторов, объедините их в один String и укажите их в операторе DELETE в виде предложения IN, где все идентификаторы будут перечислены явно:

DELETE dm_document OBJECT WHERE r_object_id IN ('0902e70480002d01', '0902e70480002d02', '0902e70480002d03', ...)
...