如何使用另一个表 typeorm 查询不符合条件的 id
Posted
技术标签:
【中文标题】如何使用另一个表 typeorm 查询不符合条件的 id【英文标题】:How to query id not in condition with another table typeorm 【发布时间】:2021-10-25 11:06:13 【问题描述】:这里是查询
SELECT * from tableA WHERE tableA.id NOT IN (SELECT tableB.a_id FROM tableB);
相同的查询如何使用 TypeORM 打字稿编写? 下面是代码,我试过了,还是不行
this.createQueryBuilder('tableA')
.where(`tableA.id != :id`, id )
【问题讨论】:
【参考方案1】:您可以先从tableB
中选择ID,然后使用您已获得的ID(我假设它们已映射并存储在var ids: string[]
)来查询tableA
。
this.createQueryBuilder('tableA')
.where(`tableA.id <> ALL(:ids)`, ids )
【讨论】:
不选择那些id leftJoinAndSelect 会起作用吗? 我不确定,但您可以尝试左连接,然后 tableB 中的某些字段为空。【参考方案2】:const tableBqry = tableBRepository
.createQueryBuilder('tableB')
.select("tableb_id");
const tableAqry = tableARepository
.createQueryBuilder('tableA')
.where("tableA.id NOT IN (" + tableBqry.getSql() + ")");
const results = await tableAqry.getMany();
此方法可以很好地解决上述问题。
【讨论】:
以上是关于如何使用另一个表 typeorm 查询不符合条件的 id的主要内容,如果未能解决你的问题,请参考以下文章