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

SQL转TypeORM Query Builder 多参数groupBy传参问题咨询

TypeORM 多字段GROUP BY查询实现方案

你需要实现的SQL语句可以通过链式调用addGroupBy方法实现多字段分组,完整实现代码如下:

import { getRepository } from 'typeorm';
import { Order } from './your-entity-path/Order.entity'; // 替换为你自己的Order实体路径

const orderGroupResult = await getRepository(Order)
  .createQueryBuilder('orders')
  // 对应SELECT部分
  .select('DATE(orders.OrderDate)', 'date')
  .addSelect('COUNT(orders.OrderId)', 'orderCount')
  .addSelect('orders.ShipperID', 'shipperID')
  // 对应GROUP BY部分
  .groupBy('DATE(orders.OrderDate)')
  .addGroupBy('orders.ShipperID') // 追加第二个分组字段,更多字段可继续调用addGroupBy
  // 对应ORDER BY部分
  .orderBy('DATE(orders.OrderDate)', 'DESC')
  // 拿到原始查询结果
  .getRawMany();

注意事项

  • TypeORM的groupBy方法仅支持设置首个分组条件,后续所有额外分组条件都需要调用addGroupBy方法追加
  • 上述代码中的日期函数DATE()适配MySQL,如果使用PostgreSQL可替换为DATE_TRUNC('day', orders.OrderDate),SQL Server可直接使用CAST(orders.OrderDate AS DATE)
  • 如果使用TypeORM 0.3+版本,可将getRepository替换为dataSource.getRepository或者使用注入的Repository实例调用查询构造器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:24:01