下面是我的SQL查询:
从剩下的订单中选择不同的ports.port_name加入port_master orders.officeId = ports.portId;
如何使用typeorm查询运行程序以选择唯一的端口名来编写以上SQL?下面的语法获取所有端口
等待queryRunner.manager.find(订单,{ 关系:[“端口”], 其中:过滤器 })。then((result:any)=> { 订单=结果; });
答案 0 :(得分:6)
另一种方法是使用查询生成器和distinct
方法
await this.createQueryBuilder('entity name')
.select('column')
.distinct(true)
.getRawMany();
答案 1 :(得分:0)
等待this.createQueryBuilder(“实体名称”).select('DISTINCT (“专栏”)')。getRawMany();
答案 2 :(得分:0)
除了使用原始查询,您还可以使用下面提到的查询生成器
await getManager().createQueryBuilder(orders , "odrs")
.leftJoinAndSelect(ports, "pts", "odrs.officeId = pts.portId")
.select('DISTINCT odrs.port_name', 'port_name')
.orderBy("odrs.port_name", "ASC")
.getRawMany();
谢谢
答案 3 :(得分:0)
如果您使用的是 Postgresql,您可以使用 distinctOn
并且查询如下所示:
await getRepository(Feed)
.createQueryBuilder('feed')
.where({ uploaderId: In([1,2,3,4]) })
.distinctOn(['feed.uploaderId'])
.orderBy({ 'feed.uploaderId': 'ASC', 'feed.createdAt': 'DESC' })
.getMany()
在上面的例子中有一个 Feed
表,我想获取给定数组中存在 Id 的行,并用 uploaderId
区分值,然后按 {{1} } 日期