Typeorm选择特定列的最大值

时间:2019-01-18 08:39:14

标签: typeorm

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

代码

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

2 个答案:

答案 0 :(得分:1)

如果要在选择子句中添加 MAX SUM 之类的功能,则需要执行 getRawOne() getRawMany()。这将给您原始的响应:

SELECT TYPE, 
COUNT(VALUE), 
(select count(*) from table1 where code = 'Q2') ,
COUNT(VALUE) / (select count(*) from table1 where code = 'Q2') as score
FROM Table1
where
CODE = 'Q2' AND
VALUE in (1,2)
GROUP BY TYPE

答案 1 :(得分:0)

方法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;
}

更多信息可以在official documentation中找到。