在 typeorm 中使用 select 插入
Insert using a select in typeorm
我想重现一个查询,其中的值是 typeorm 中 select 的结果。
我要重现的查询是我在此处提供的查询,但我在 typeorm 文档中找不到任何内容。
(查询对答案的作用并不重要,我只需要知道如何在 typeorm 中编写“SELECT
”)
INSERT INTO `furgpezzo`(`giacenza`, `giacenzaMin`, `pezzoBarcode`, `furgoneTarga`, `invStandardId`)
select '0', '5', '234234234234', f.`furgoneTarga`, '1'
from `furgpezzo` f
where f.`invStandardId` = '1'
group by f.`furgoneTarga`
类似于:
(编辑:)
return await this.dmDatabase.getRepository(FurgPezzo)
.createQueryBuilder()
.insert()
.into(FurgPezzo)
.values( //here put my select )
是的,你可以。来自 docs:
You can easily create subqueries. Subqueries are supported in FROM
,
WHERE
and JOIN
expressions.
例如参考以下帖子:, .
您可以使用子查询:
return await this.dmDatabase.getRepository(InvStandard)
.insert()
.values(qb => {qb.select(FurgPezzo).where()})//here put my select
// with subquery->
return await this.dmDatabase.getRepository(InvStandard)
.insert()
.values(qb => {qb.select(FurgPezzo).where(
const subQuery = qb.subQuery()
// your subquery builder
return "your condition " + subQuery;)})
这是我能想到的最巧妙的解决方案,希望对未来的探索者有所帮助。回答评论启发了我
const [selectQuery, params] = this.entityManager
.createQueryBuilder()
.select('user.name')
.from(User, 'user')
.where('user.id IN (:...ids)', {
ids: [
'87654321-1234-1234-1234-123456789abc',
'a9876521-aabb-ccdd-ffaa-123abcdefccc',
],
})
.getQueryAndParameters()
await this.entityManager.query(
`
INSERT INTO dummy("name")
${selectQuery}
`,
params
)
我想重现一个查询,其中的值是 typeorm 中 select 的结果。
我要重现的查询是我在此处提供的查询,但我在 typeorm 文档中找不到任何内容。
(查询对答案的作用并不重要,我只需要知道如何在 typeorm 中编写“SELECT
”)
INSERT INTO `furgpezzo`(`giacenza`, `giacenzaMin`, `pezzoBarcode`, `furgoneTarga`, `invStandardId`)
select '0', '5', '234234234234', f.`furgoneTarga`, '1'
from `furgpezzo` f
where f.`invStandardId` = '1'
group by f.`furgoneTarga`
类似于:
(编辑:)
return await this.dmDatabase.getRepository(FurgPezzo)
.createQueryBuilder()
.insert()
.into(FurgPezzo)
.values( //here put my select )
是的,你可以。来自 docs:
You can easily create subqueries. Subqueries are supported in
FROM
,WHERE
andJOIN
expressions.
例如参考以下帖子:
您可以使用子查询:
return await this.dmDatabase.getRepository(InvStandard)
.insert()
.values(qb => {qb.select(FurgPezzo).where()})//here put my select
// with subquery->
return await this.dmDatabase.getRepository(InvStandard)
.insert()
.values(qb => {qb.select(FurgPezzo).where(
const subQuery = qb.subQuery()
// your subquery builder
return "your condition " + subQuery;)})
这是我能想到的最巧妙的解决方案,希望对未来的探索者有所帮助。回答评论启发了我
const [selectQuery, params] = this.entityManager
.createQueryBuilder()
.select('user.name')
.from(User, 'user')
.where('user.id IN (:...ids)', {
ids: [
'87654321-1234-1234-1234-123456789abc',
'a9876521-aabb-ccdd-ffaa-123abcdefccc',
],
})
.getQueryAndParameters()
await this.entityManager.query(
`
INSERT INTO dummy("name")
${selectQuery}
`,
params
)