我试图加入子查询表,但我不知道如何使用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;
1 回答
这两个查询功能相同:
从第一个开始就没有任何优势 . 所以,如果第一个提供想要的结果,那么第二个也应该提供 .