Как заставить jOOQ сгенерировать «удалить [таблицу].*»?

#java #mysql #jooq

Вопрос:

Я создал этот запрос jOOQ для удаления определенных строк из таблицы :

     DSLContext ctx = DSL.using(c, SQLDialect.MYSQL);
    ctx.deleteFrom(table("filestorage").as("fis"))
      .where(
        field("fis.file_id").eq(storageAudioFile.getId().toString())
        .and(field("fis.scheme").eq(storageAudioFile.getScheme()))
        .and(field("fis.updated").eq(storageAudioFile.getUpdated()))
      ).limit(1).execute();
 

Это создает запрос, начинающийся с delete fis from [...] вместо delete fis.* from [..] :

 delete `fis` from filestorage as `fis` where (fis.file_id = ? and fis.scheme = ? and fis.updated = ?) limit ?
 

Я не могу найти много информации об этом в документации, и я пытался изменить table("filestorage") ее с помощью различных синтаксисов, но безуспешно.

Как заставить jOOQ генерировать delete fis.* from [...] в этом запросе?

Комментарии:

1. Какова цель этого синтаксиса в MySQL?

2. @LukasEder цель состоит в том, чтобы удалить все строки, соответствующие критериям запроса, если вы это имеете в виду. Я действительно не возражаю, если он генерирует delete fis.* from [...] или просто delete from [...] — до тех пор, пока MySQL не выдает ошибку 🙂

3. @LukasEder похоже, это сводится к моей собственной глупости. Я не могу использовать limit в сочетании с удалением нескольких таблиц. Мой запрос на самом деле не является удалением из нескольких таблиц, но MySQL интерпретирует его как один, потому что я использую delete [table] from [...] . Вот почему он терпит неудачу. Так что это действительно не имеет ничего общего с jOOQ, а скорее с использованием limit в сочетании с синтаксисом удаления нескольких таблиц.

4. Вы можете ответить на свой собственный вопрос здесь о переполнении стека. Возможно, кто-то еще найдет это полезным в будущем