Typeorm 子查询添加 select

Typeorm subquery add select

我是使用 typeorm 的新手,这是我第二次对 typeorm 感到困惑,我有以下查询:

SELECT t1.a,t1.b,t2.a
  (SELECT TOP 1 t1.a
  FROM table1 t1
  WHERE t1.b = t2.a
  ORDER BY t1.a DESC
  ) AS MaxT1
FROM Table1 t1
INNER JOIN Table2 t2 ON t1.a = t2.a

我试过这个:

let query = await getManager()
  .createQueryBuilder(Bid, 'bid')
    .select([
      'l.ID_anv_Lot',
      'l.LotNumber',
      'w.WineryName',
      'bid.BidAmount',
      'bid.ProxyBidAmount',
      'er.ID_Contact'
    ])
    .addSelect(Table1, t1)
    .innerJoin(Lot, 'l', 'l.lotNumber = bid.lotNum AND l.paddleNumber = bid.paddleNumber')

但结果是表 1 中的所有行

这个例子可以帮助你执行子查询:

const posts = await connection.getRepository(Post)
            .createQueryBuilder("post")
            .where(qb => {
                const subQuery = qb.subQuery()
                    .select("usr.name")
                    .from(User, "usr")
                    .where("usr.registered = :registered")
                    .getQuery();
                return "post.title IN " + subQuery;
            })
            .setParameter("registered", true)
            .orderBy("post.id")
            .getMany();

您可以在 SELECT 语句中使用子选择:

let query = await this.createQueryBuilder('t1')
    .select()
    .innnerJoin('t1.t2', 't2', 't1.a = t2.a')
    .addSelect(subQuery => {        
         return subQuery            
              .select('_t1.a')            
              .from(Table1, '_t1')
              .where('_t1.b = t2.a');    
     }, 'MaxT1')
     .getRawMany()

您可以在这里找到更多信息:https://orkhan.gitbook.io/typeorm/docs/select-query-builder