Typeorm select max 与特定列

Hen*_*eak 4 javascript typeorm

我想从表中选择的列命名的最大值quotationVersion从表中quotation

代码

  getOneMaximumQuotationVersion() {
    const query = this.createQueryBuilder("quotation");
    query.select("MAX(quotation.quotationVersion)", "max");
    // query.addSelect("MAX(quotation.quotationVersion)", "max");
    return query.getOne();
  }
Run Code Online (Sandbox Code Playgroud)

Hus*_*bar 7

如果要在选择子句中添加MAXSUM等函数,则需要执行getRawOne()getRawMany()。这将为您提供原始响应:

getOneMaximumQuotationVersion() {
    const query = this.createQueryBuilder("quotation");
    query.select("MAX(quotation.quotationVersion)", "max");
    // query.addSelect("MAX(quotation.quotationVersion)", "max");
    return query.getRawOne();
  }
Run Code Online (Sandbox Code Playgroud)


Fir*_*his 5

方法getOnegetMany用于选择实际的数据库实体。如果选择计算值,则需要使用getRawOne(或getRawMany用于多个值)。请注意,返回的值是一个对象,其键是您在调用时指定的别名select;在您的情况下,别名称为max.

另外不要忘记操作的异步性质。

所以,我会像这样重写你的函数:

async getOneMaximumQuotationVersion() {
  const query = this.createQueryBuilder("quotation");
  query.select("MAX(quotation.quotationVersion)", "max");
  const result = await query.getRawOne();
  return result.max;
}
Run Code Online (Sandbox Code Playgroud)

更多信息可以在官方文档中找到。

  • 如果有人能解释这个答案有什么问题,我将非常感激。在我看来它仍然是正确的。 (2认同)