Sequelize

时间:2015-11-10 19:42:18

标签: sql node.js sequelize.js

我使用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中制作?

1 个答案:

答案 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函数调用(aggregatefind*等)找到一种方法,这不是太可怕,我也会在这里作为一个单独的答案发布。