我有这个 SQL 查询
'(SELECT “A”.”id" AS “aId”, “A”.”name”, “A”.”updatedAt" AS “aUpdatedDate”, “B”.”name” AS “b.name”, “B”.”status” AS “b.status”, FROM “A” INNER JOIN “B” ON “A”.”id" = “B”.”a_id” WHERE EXISTS (SELECT “status” FROM “B” WHERE “B”.”a_id” = “A”.”id" AND “B”.”status" IN (‘pending’, ‘failed’))) OFFSET ? LIMIT ?’;
这将返回所需的数据,但问题是我很想以这种格式获取数据。这是预期的输出:
{
aid: 1,
name: 'nameOne',
aUpdatedDate: '2018-09-10',
Bs: [
{
name: 'b-one',
status: 'completed'
},
{
name: 'b-two',
status: 'pending'
}
]
}
但是输出将 B 的每个实例分开,而 B 又会复制返回的 A。返回的实际输出是这样的
{
aid: 1,
name: 'nameOne',
aUpdatedDate: '2018-09-10',
'b.name': 'b-one',
'b.status': 'completed'
},
{
aid: 1,
name: 'nameOne',
aUpdatedDate: '2018-09-10',
'b.name': 'b-two',
'b.status': 'pending'
},
对于一些上下文,您可以查看 StackOverflow 链接,该链接解释了我为什么使用
WHERE EXISTS
子句以及有关初始问题的一些背景知识。
最佳答案
我认为您正在使用 raw : true
,请将其删除或使其为 false :
sequelize.query('SELECT...', { type: sequelize.QueryTypes.SELECT , raw : false }).then(results => {
console.log(results)
})
你很高兴去。
关于sql - 如何在数组中检索 INNER JOIN 的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53956656/