You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让jOOQ生成`delete 表别名.*`格式的MySQL删除语句

问题分析

MySQL 语法中,DELETE 别名 FROM 表 as 别名 ... 和 DELETE 别名.* FROM 表 as 别名 ... 语义完全一致,执行效果、性能没有任何差异,常规场景下不需要额外调整语法格式。

如果你的使用场景强制要求生成带.*的DELETE语句,可以按以下方式修改jOOQ代码:

调整方案

将原有的deleteFrom链式写法,替换为显式指定删除目标的delete(表达式) + from写法:

DSLContext ctx = DSL.using(c, SQLDialect.MYSQL);
ctx.delete(field("fis.*"))
  .from(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();

调整后jOOQ生成的SQL就会符合要求的delete fis.* from [...]格式。

如果你使用的是jOOQ代码生成器生成的表对象,不需要手写plain SQL字段,直接调用表对象的asterisk()方法即可:delete(FILESTORAGE.asterisk())。


内容的提问来源于stack exchange,提问作者sbrattla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 11:51:01