2014-03-25 70 views
18

我正在通過Sequelize尋找group by查詢,似乎無法找到任何文檔。group by by sequelize是如何工作的?

SELECT column, count(column) 
FROM table 
GROUP BY column 
+0

http://sequelizejs.com/docs/latest/models#block-33-line-0 –

+1

雖然它可以分組它不能執行以上。我正在使用原始查詢 – user964287

回答

33

我想你尋找的是這樣的:

Table.findAll({ 
    attributes: ['column1', 
    sequelize.fn('count', sequelize.col('column2'))], 
    group: ["Table.column1"] 
}).success(function (result) { }); 

更新:較新版本的Sequelize使用。然後而不是。成功

Table.findAll({ 
    attributes: ['column1', 
    sequelize.fn('count', sequelize.col('column2'))], 
    group: ["Table.column1"] 
}).then(function (result) { }); 
+1

哇,這太好了。你怎麼知道的? – Domi

+1

更新版本的sequelize現在使用'.then(function(result){});'而不是'.success(function(result){});' –

+0

是否有關於此的任何文檔? – Ante

1

例如:如何爲分組函數列添加一個方便的別名。

我這樣做是一個單獨的迴應,主要是因爲它不會在評論中格式良好,否則我只會將它添加到Sampat的回答中。

function getSumsBySomeId() { 
    const criteria = { 
    attributes: ['some_id', [sequelize.fn('sum', sequelize.col('some_count')), 'some_count_sum']], 
    group: ['some_id'], 
    raw: true 
    }; 
    return Table.getAll(criteria); 
} 

得出:

{ some_id: 42, some_count_sum: 100 }, 
{ some_id: 43, some_count_sum: 150 } 
... 
etc. 
3

集團通過與伯爵sequelize ORM

'field' - 您可以重命名這個字符串,它是你的field(column)數據庫

'count' - 保留字符串需要得到countsequelize

'cnt' - 您可以重命名這個字符串,它是你的輸出count

Sequelize版本3.25.0

User.findAll({ 
     attributes: ['field', [sequelize.fn('count', sequelize.col('field')), 'cnt']], 
     group: ['field'], 
})