【发布时间】:2021-09-25 08:38:15
【问题描述】:
有没有办法通过 sequelize 运行原始 JOIN?
下面是一个示例查询。我不能直接使用 JOIN,因为表 b 可以包含基于每个 group_id 表 a 的多条记录。我正在运行 WHERE id IN(子查询),结果对于大型数据集来说很慢。相比之下,JOIN 的表现更好。但是,我在 sequelize 中看不到执行原始 INNER JOIN 的选项。
TABLE A
|---------------------|------------------|
| id | name |
|---------------------|------------------|
| 12 | John Doe |
|---------------------|------------------|
TABLE B
|---------------------|------------------|------------------|
| id | a_id | group_id |
|---------------------|------------------|------------------|
| 1 | 12 | 415 |
|---------------------|------------------|------------------|
| 2 | 12 | 416 |
|---------------------|------------------|------------------|
| 3 | 12 | 417 |
|---------------------|------------------|------------------|
SELECT a.*
FROM a
INNER JOIN (SELECT DISTINCT b.a_id FROM b WHERE b.group_id IN (1,2,4,5,6)) as b ON b.a_id = a.id
ORDER BY a.updated_at DESC;
【问题讨论】:
-
你试过
include吗? -
我试过了。它不会让我加入原始 sql 查询。其他联接工作正常。
标签: node.js postgresql sequelize.js