【发布时间】:2018-04-20 11:07:32
【问题描述】:
我正在尝试在子查询中加入表,但我不知道如何使用 Sequelize ORM 来表达它。这是我要运行的原始 SQL:
SELECT *
FROM table_a a
LEFT OUTER JOIN (SELECT * FROM table_b b WHERE col = VAL) ON a.id = b.id;
我试过了
A.findAll({
include: [
{
model: B,
where: { col: val },
}
]
}).then(...);
但这并没有得到我想要的查询。相反,它将join 更改为INNER JOIN,并改为加入col = VALUE。有没有办法对子查询的结果进行连接?如果重要的话,我正在使用 Postgres。
更新:进行以下更改后,生成的查询现在按预期使用 LEFT OUTER JOIN:
include: [
{
model: B,
where: { col: val },
required: false,
}
]
但是,它仍然加入 col = VALUE,生成的查询看起来像:
SELECT * FROM table_a a
LEFT OUTER JOIN table_b b ON a.id = b.id AND b.col = VALUE;
【问题讨论】: