我使用Sequelize ORM for Node.js.我需要在某些列中获取具有唯一值的行。示例表:
id | name | group
-----------------
1 | One | 2
2 | Two | 1
3 | Three| 2
4 | Four | 3
5 | Five | 1
查询列group
和结果:
id | name | group
-----------------
1 | One | 2
2 | Two | 1
4 | Four | 3
第一,第二和第四行是第一个拥有唯一group
值的人。如何在Sequelize中制作?
答案 0 :(得分:2)
Sequelize原始查询是获取所需行的一种方法:
/*
var sql =
SELECT r.id,
r.name,
r.groupnum
FROM s04.row r
JOIN
(SELECT min(id) AS id,
groupnum
FROM s04.row
GROUP BY groupnum) s
ON r.id = s.id
*/
return sq.query(sql, { type: sq.QueryTypes.SELECT});
生成的promise将解析为JSON数组:
[
{
"id": 1,
"name": "One",
"groupnum": 2
}
...
]
如果您需要将这些行作为实例使用,则可以在数组的每个元素上调用build
:
Model.build({ /* attributes-hash */ }, { isNewRecord: false })
有关示例,请参阅here。如果我通过Sequelize函数调用(aggregate
,find*
等)找到一种方法,这不是太可怕,我也会在这里作为一个单独的答案发布。